Oxygen's new window-move feature fatal for KJumpingCube game

Hugo Pereira Da Costa hugo at oxygen-icons.org
Thu Jun 17 01:34:31 BST 2010


Hello Ian,

Some clarifications to you and others.

So first, the quick summary: this (the bug above) has been fixed in trunk. This 
was an oxygen bug. 

Second: the longer summary: 

Unfortunately defining empty by not "filled by pixmaps" is hard to identify at 
the style level. (ultimately: everything, including the empty window 
background, is filled by pixmaps). 

On the other hand some other widgets look empty but can't be drag from (see: 
the song-list in the right panel of amarok: here you want to be able to select 
multiple tracks by moving the pressed mouse around. So no window drag)

So for this feature to work (in oxygen) one has to find other "definitions" of 
empty: 

the most robust one is: not empty when  "mouse press and move events are eaten 
by a widget -because it does something with it- and not passed to its parent 
(ultimately, the parent QMainWindow)". 

That works in most (say 90%) of the cases, but many apps (and not only 
kjumpingcube) do not respect that: one given widget does something with the 
event (turn the dice in kjumpingcube), but still pass it to its parent. 

No real blame to the applications: they were there first, and Qt does not 
require (in general) that you eat an event when you do something with it 
(although it does, sometimes). 

Note that parker's commit to kjumpingcube just addresses that (so that the bug 
is actually fixed twice)

So I had to find other definitions, for corner cases. One is: "it is not empty 
when the mouse cursor is not the default one" (cause it means that you are  
most likely doing smthing with the mouse), This was supposed to work, was 
working in some cases, but not in the case of kjumpingcube (and others), which 
is the bug I fixed. 

Ok. There are other corner cases (not that many though), like "not empty when 
mouse is used to multiple select stuff, not empty when a drag is in progress, 
etc., and I won't list them all here. 

I think this collection of definitions is now robust enough so that no 
application is broken. A large fraction of apps really are not (well, 
basically all the ones I could test, and all the ones corresponding to bug 
reports I got since this feature is enabled by default. Moreover, in most 
cases the fix was "general" so that it would fix more apps than just the one of 
the bug report. 

If there are still some broken apps on the market, there is a mechanism in 
oxygen to blacklist widgets/apps from configuration file (although I don't like 
it and I believe nobody does. This is just here as a safety belt for new bugs 
that would show up and while waiting for the next release where everything 
should be programatically fixed).

I hope this helps clarifying things,

Hugo




More information about the kde-core-devel mailing list