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