Bug 234624 - Embeddable Image Viewer permanently messes up status bar
Summary: Embeddable Image Viewer permanently messes up status bar
Status: RESOLVED FIXED
Alias: None
Product: konqueror
Classification: Applications
Component: khtml image part (show other bugs)
Version: unspecified
Platform: Compiled Sources Linux
: NOR normal
Target Milestone: ---
Assignee: Konqueror Developers
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-04-17 16:01 UTC by Jonathan Marten
Modified: 2010-10-12 17:49 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In: 4.5.2


Attachments
Screen shot 1 (23.59 KB, image/png)
2010-04-17 16:02 UTC, Jonathan Marten
Details
Screen shot 2 (212.96 KB, image/png)
2010-04-17 16:04 UTC, Jonathan Marten
Details
Screen shot 3 (217.49 KB, image/png)
2010-04-17 16:05 UTC, Jonathan Marten
Details
Screen shot 4 (24.38 KB, image/png)
2010-04-17 16:07 UTC, Jonathan Marten
Details
Screen shot 5 (24.47 KB, image/png)
2010-04-17 16:08 UTC, Jonathan Marten
Details
Status bar after fix (Oxygen style) (55.81 KB, image/png)
2010-08-31 14:27 UTC, Jonathan Marten
Details
Status bar after fix (Plastique style) (39.69 KB, image/png)
2010-08-31 14:28 UTC, Jonathan Marten
Details
Test case for javascript:window.close() crash (218 bytes, text/html)
2010-09-17 11:13 UTC, Jonathan Marten
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Jonathan Marten 2010-04-17 16:01:18 UTC
Version:            (using Devel)
OS:                Linux
Installed from:    Compiled sources

When previewing an image in Konqueror using the Embeddable Image Viewer (whether as default action or explicitly selected for preview), the status bar immediately doubles in vertical size.  Going "Back" from the preview leaves the status bar at that size and any addons' icons behind.  Repeating preview/back a number of times leaves more icons behind.

This does not seem to happen when previewing with Gwenview or Okular.

See attached screenshots for an illustration of the problem.
Comment 1 Jonathan Marten 2010-04-17 16:02:27 UTC
Created attachment 42842 [details]
Screen shot 1

Newly opened Konqueror window
Comment 2 Jonathan Marten 2010-04-17 16:04:52 UTC
Created attachment 42843 [details]
Screen shot 2

Previewing in Embeddable Image Viewer.  The AdBlocK icon (from extragear/base/konq-plugins/adblock) is clickable.
Comment 3 Jonathan Marten 2010-04-17 16:05:58 UTC
Created attachment 42844 [details]
Screen shot 3

As previous, but hovering over a toolbar button.  Note the duplicated message.
Comment 4 Jonathan Marten 2010-04-17 16:07:05 UTC
Created attachment 42845 [details]
Screen shot 4

After doing "Back" from the image preview.  The AdBlocK icon is still present but is no longer clickable.
Comment 5 Jonathan Marten 2010-04-17 16:08:10 UTC
Created attachment 42846 [details]
Screen shot 5

After having done lots of Preview/Back operations.  Good collection of useless icons.
Comment 6 Maksim Orlovich 2010-04-17 17:00:24 UTC
Thanks; I saw that yesterday but had no clue how it got triggered. I guess it is likely related to the simple image viewer part using a child KHTMLPart (which loads the appropriate plugins). Don't know enough about how statusbar extension stuff works to say more w/o further code reading.
Comment 7 Maksim Orlovich 2010-08-29 19:25:37 UTC
SVN commit 1169563 by orlovich:

Create a StatusBarExtension and make sure to propagate the statusbar set on it to the child khtmlpart 
so if a plugin (e.g. adblock helper) tries to do statusbar stuff we use the konqueror statusbar and 
don't end up creating a second/kmainwindow one 

First part of fix for #234624

CCBUG:234624


 M  +6 -0      khtmlimage.cpp  
 M  +2 -0      khtmlimage.h  


WebSVN link: http://websvn.kde.org/?view=rev&revision=1169563
Comment 8 Maksim Orlovich 2010-08-29 19:27:31 UTC
SVN commit 1169565 by orlovich:

Merged revision:r1169563 | orlovich | 2010-08-29 13:33:49 -0400 (Sun, 29 Aug 2010) | 8 lines

Create a StatusBarExtension and make sure to propagate the statusbar set on it to the child khtmlpart 
so if a plugin (e.g. adblock helper) tries to do statusbar stuff we use the konqueror statusbar and 
don't end up creating a second/kmainwindow one 

First part of fix for #234624

CCBUG:234624

 M  +6 -0      khtmlimage.cpp  
 M  +2 -0      khtmlimage.h  


WebSVN link: http://websvn.kde.org/?view=rev&revision=1169565
Comment 9 Maksim Orlovich 2010-08-29 19:29:08 UTC
SVN commit 1169566 by orlovich:

Always delete our label, since at the point we're cleaned up the statusbar extension may no longer be available.

Second part of fix of #234624, fixes multiple ghost icons

BUG:234624
FIXED-IN:4.5.2


 M  +0 -2      adblock.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=1169566
Comment 10 Jonathan Marten 2010-08-31 14:26:01 UTC
Not sure if this is a consequence of the fix or a separate bug (please close if so), but the Konqueror status bar now looks very wrong.  It is bigger vertically than before, so the progress bar and other icons look too small.  In addition, when hovering over a link the status text is preceded by "<qt>" and over a blank area the text shows just "<qt>".  See the attached screenshot.
Comment 11 Jonathan Marten 2010-08-31 14:27:18 UTC
Created attachment 51139 [details]
Status bar after fix (Oxygen style)
Comment 12 Jonathan Marten 2010-08-31 14:28:37 UTC
Created attachment 51140 [details]
Status bar after fix (Plastique style)

The status bar looks even worse when using a style with borders.
Comment 13 Maksim Orlovich 2010-08-31 15:35:20 UTC
I think it's some sort of a separate regression; IIRC someone mentioned it to me before this commit. I am on a stable tree (KDE 4.5 branch, Qt 4.6.3) and I don't see it.
Comment 14 David Faure 2010-09-03 22:44:13 UTC
Yep, it was from my trunk-only statusbar changes, completely unrelated to the original bug in this report. Fixed in 1171419.
Comment 15 Jonathan Marten 2010-09-17 11:13:29 UTC
Created attachment 51749 [details]
Test case for javascript:window.close() crash

The commit (r1169566) in comment #9 causes a crash when a link with a HREF of "javascript:window.close()" is clicked.  Test case attached.

Thread 1 (Thread 0xb586d930 (LWP 3792)):
[KCrash Handler]
#7  0xab23b3d9 in ~AdBlock (this=0x97cfc18, __in_chrg=<value optimized out>, __vtt_parm=<value optimized out>) at /ws/trunk/extragear/base/konq-plugins/adblock/adblock.cpp:109
#8  0xb6db1567 in QObjectPrivate::deleteChildren (this=0x94dff70) at kernel/qobject.cpp:1986
#9  0xb6db3cba in ~QObject (this=0x962dda8, __in_chrg=<value optimized out>) at kernel/qobject.cpp:975
#10 0xb4e5b121 in ~Part (this=0x962dda8, __vtt_parm=0xae67db68, __in_chrg=<value optimized out>) at /ws/trunk/kdelibs/kparts/part.cpp:213
#11 0xb4e5b2e3 in ~ReadOnlyPart (this=0x962dda8, __vtt_parm=0xae67db64, __in_chrg=<value optimized out>) at /ws/trunk/kdelibs/kparts/part.cpp:465
#12 0xae019429 in ~KHTMLPart (this=0x962dda8, __in_chrg=<value optimized out>, __vtt_parm=<value optimized out>) at /ws/trunk/kdelibs/khtml/khtml_part.cpp:579
#13 0xb6da72b3 in qDeleteInEventHandler (o=0x2f346564) at kernel/qobject.cpp:4001
#14 0xb6db13e8 in QObject::event (this=0x962dda8, e=0x97f5e70) at kernel/qobject.cpp:1231
#15 0xb60f980c in QApplicationPrivate::notify_helper (this=0x8f4bc68, receiver=0x962dda8, e=0x97f5e70) at kernel/qapplication.cpp:4306
#16 0xb60fb977 in QApplication::notify (this=0xbfdad3e8, receiver=0x962dda8, e=0x97f5e70) at kernel/qapplication.cpp:4271
#17 0xb7529ed8 in KApplication::notify (this=0xbfdad3e8, receiver=0x962dda8, event=0x97f5e70) at /ws/trunk/kdelibs/kdeui/kernel/kapplication.cpp:310
#18 0xb6d93c15 in QCoreApplication::notifyInternal (this=0xbfdad3e8, receiver=0x962dda8, event=0x97f5e70) at kernel/qcoreapplication.cpp:726
#19 0xb6d9509a in QCoreApplication::sendEvent (receiver=0x0, event_type=0, data=0x8ed80d8) at kernel/qcoreapplication.h:215
#20 QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x8ed80d8) at kernel/qcoreapplication.cpp:1367
#21 0xb6d952cc in QCoreApplication::sendPostedEvents (receiver=0x0, event_type=0) at kernel/qcoreapplication.cpp:1260
#22 0xb61dbe6b in QCoreApplication::sendPostedEvents (this=0x8ed7ac0, flags=...) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:220
#23 QEventDispatcherX11::processEvents (this=0x8ed7ac0, flags=...) at kernel/qeventdispatcher_x11.cpp:75
#24 0xb6d925c7 in QEventLoop::processEvents (this=0xbfdad2d0, flags=...) at kernel/qeventloop.cpp:149
#25 0xb6d92a0d in QEventLoop::exec (this=0xbfdad2d0, flags=...) at kernel/qeventloop.cpp:201
#26 0xb6d9538e in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1003
#27 0xb60f9104 in QApplication::exec () at kernel/qapplication.cpp:3585
#28 0xb1763731 in kdemain (argc=2, argv=0x8f376b0) at /ws/trunk/kdebase/apps/konqueror/src/konqmain.cpp:219
#29 0x0804ecf3 in launch (argc=<value optimized out>, _name=<value optimized out>, args=<value optimized out>, cwd=0x8f38347 "/usr/home/jjm/docs", envc=60, 
    envs=0x8f3835e "MANPATH=/etc/java-config-2/current-system-vm/man:/usr/local/share/man:/usr/share/man:/usr/share/binutils-data/i686-pc-linux-gnu/2.20.1/man:/usr/share/gcc-data/i686-pc-linux-gnu/4.4.3/man:/etc/java-con"..., reset_env=true, tty=0x0, avoid_loops=false, startup_id_str=0x8f38e34 "keelhaul;1284714707;609418;6164_TIME180190418") at /ws/trunk/kdelibs/kinit/kinit.cpp:727
#30 0x0804f42d in handle_launcher_request (sock=21, who=<value optimized out>) at /ws/trunk/kdelibs/kinit/kinit.cpp:1219
#31 0x080500b8 in handle_requests (waitForPid=<value optimized out>) at /ws/trunk/kdelibs/kinit/kinit.cpp:1403
#32 0x08050a33 in main (argc=4, argv=0xbfdadb54, envp=0xbfdadb68) at /ws/trunk/kdelibs/kinit/kinit.cpp:1898

Reverting the commit appears to fix the problem.
Comment 16 Maksim Orlovich 2010-10-12 17:49:04 UTC
SVN commit 1185208 by orlovich:

Fix the regression due to the 'don't forget to delete the label' fix --- the label may also get deleted before us 
in the window.close case, so guard against that.

This cleanup order thing sure is messy (and not just here, also with view vs. part, etc.) :(

CCBUG: 234624
CCBUG: 253921


 M  +15 -13    adblock.cpp  
 M  +2 -1      adblock.h  


WebSVN link: http://websvn.kde.org/?view=rev&revision=1185208