Bug 199910 - [PATCH] Background dolphin windows goes up of one level when opening properties dialog
Summary: [PATCH] Background dolphin windows goes up of one level when opening properti...
Status: RESOLVED FIXED
Alias: None
Product: kwin
Classification: Plasma
Component: general (show other bugs)
Version: git master
Platform: Compiled Sources Linux
: NOR normal
Target Milestone: ---
Assignee: KWin default assignee
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-07-12 19:33 UTC by FiNeX
Modified: 2009-10-03 17:41 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:


Attachments
functional patch (original code is only commented, not deleted) (704 bytes, patch)
2009-08-21 01:54 UTC, Thomas Lübking
Details
Handle recursive transients (939 bytes, application/octet-stream)
2009-08-21 04:55 UTC, Thomas Lübking
Details

Note You need to log in before you can comment on or make changes to this bug.
Description FiNeX 2009-07-12 19:33:46 UTC
Steps to reproduce:
1) open a dolphin window, call this window "A".
2) open another window (another application, konqueror for example), call this window "B".
3) open a new dolphin window, call this window "C".
-> now we have "A" below "B" which is below "C".
4) select a file on "C" and press ALT+Enter: this will open a properties dialog window
-> now the window order (from bottom to top) is: B, A and C.

I hope to have correclty explained the problem. I'm not sure this is a dolphin problem, maybe it could be a kwin one.
Comment 1 Thomas Lübking 2009-07-12 21:35:46 UTC
confirmed, does not happen with compiz

actually the other window is raised as soon as the dialog takes the focus (try increasing the focus stealing prevention to extreme)

the dialog is /not/ modal and transient to the window it's opened from /only/

i nevertheless suspect it's related to the two dolphin windows being children of the same process...
Comment 2 Thomas Lübking 2009-07-12 21:58:10 UTC
i assume layers.cpp:393ff is the "trouble" causer
if a transient window is raised all group members are raised instead just 
"c->transientFor()"
unfortunately i cannot test atm (need to rebuild kdelibs before...)
Comment 3 Thomas Lübking 2009-07-15 23:15:40 UTC
ok, this "fixes" it - i.e. the result is as expected (only the dialog parenting dolphin window is raised in case - lilke in compiz)

question:
is the current behaviour intended (like helping out theGimp or so?)
Comment 4 Thomas Lübking 2009-08-21 01:54:29 UTC
Created attachment 36317 [details]
functional patch (original code is only commented, not deleted)
Comment 5 lucas 2009-08-21 04:28:35 UTC
Patch does not take into account recursive transients.
Comment 6 Thomas Lübking 2009-08-21 04:55:47 UTC
Created attachment 36318 [details]
Handle recursive transients

Would it be necessary to also catch cyclic transients, i.e. e.g. A -> B -> C -> D -> B

while ((transient_parent = transient_parent->transientFor()) &&
           !transient_parent.contains(transient_parent))
Comment 7 lucas 2009-10-03 16:16:07 UTC
Patch is fine to commit.
Comment 8 Thomas Lübking 2009-10-03 17:41:01 UTC
SVN commit 1030954 by luebking:

don't raise the whole group with a transient, but only its ancestors
BUG: 199910


 M  +6 -4      layers.cpp  


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