Frustrating extender bug, help much appreciated

Rob Scheepmaker r.scheepmaker at student.utwente.nl
Tue Jan 6 14:42:27 CET 2009


Hello all,

There is a very annoying bug left in extenders (or maybe somewhere down the 
stack? Qt or kwin maybe, I'm not sure), which is way over my head. Notmart and 
I have both looked into it for quite some time, I've consulted darktears (who 
seemed to think it might be a Window management thing), and I came to the 
conclusion that I probably won't be able to fix it before 4.2.0 without some 
additional help. So any ideas (or better yet patches ;)) are really 
appreciated.
All time I put into trying to solve the bug at least gave me a lot of info on 
the exact set of circumstances that triggers this bug. I will try to explain 
as detailed as possible. If you need even more detailed information, please 
ask, and I might know the answer right away (I've sprankled debug code 
everywhere in my checkout to help me find this one).

Basic instructions to trigger this bug:
Make sure you have at least one window open. Open the clocks calendar. Drag 
the calendar away, drag it over the window you have open, and move your mouse 
fast while doing it. If your computer is fast, you might also need to generate 
some system load to be able to reproduce. You'll notice that you can 'leave 
the calendar behind' when moving your mouse over another window too fast. From 
that moment on, the calendar will no longer move when moving the mouse, unless 
you move your mouse back to the item, and slowly pick it up again. Even worse, 
if you release your mouse button after having 'lost' the calendar the calendar 
will stay on top (since it won't receive an mouseReleaseEvent), and clicking 
and dragging it again after that causes a crash (which is reported on bko 
various times, but which I didn't try to solve since the crash is just a side 
effect of incorrect behavior).

Detailed information on the exact circumstances that cause this crash:
* happens when you move you're mouse fast enough for the toplevel window to 
not keep up (the new mouseMoveEvent would give a position outside the window)
* happens when you're mouse leaves the toplevel window this way, and is over 
another window when this happens.
* happens only when the dialog you drag the extenderitem (not only the 
calendar btw, any extenderitem will do as long as all these conditions are 
met) from a dialog which get hidden afterwards, or an extender which gets a 
size of '0' afterwards. This means it normally only happens when detaching the 
last extenderitem from an extender. When disabling the extender dialog auto 
hiding in extender.cpp (you can see 2 hidePopup calls in there) AND setting an 
emptyExtenderLabel to avoid the extender ever getting the size 0x0, this 
problem doesn't occur. This is what makes me think it might be a WM problem.
* I've tried a couple of combinations of WM flags (including 
X11BypassWindowManager) without effect.

Other observations:
* when having lost the item and hovering (still having the mouse button 
pressed) over KDE3 konversation, you'll be able to drag the dividers (the 
thingy's that allow you to resize the nick list/channel/topic sizes. This 
makes me think even more that it might be a WM thing.
* When you 'lose' the item, it stops receiveing any mouse events. I even 
implemented sceneEvent() to see if any ungrab mouse events are received (or 
even any events) but that isn't the case.

If anybody got any idea what can cause this problem please let me know, either 
here on the list or on IRC (nick: pinda).

Regards,
Rob Scheepmaker

Oh, and happy new year everybody!


More information about the Plasma-devel mailing list