Merge lp:~azzar1/unity/fix-dodge-active-window into lp:unity

Proposed by Andrea Azzarone
Status: Merged
Approved by: Alex Launi
Approved revision: no longer in the source branch.
Merged at revision: 1189
Proposed branch: lp:~azzar1/unity/fix-dodge-active-window
Merge into: lp:unity
Diff against target: 26 lines (+8/-1)
1 file modified
src/Launcher.cpp (+8/-1)
To merge this branch: bzr merge lp:~azzar1/unity/fix-dodge-active-window
Reviewer Review Type Date Requested Status
Alex Launi (community) Approve
Review via email: mp+61912@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Alex Launi (alexlauni) wrote :

I don't like this as a general solution, I think it's very ugly to have stuff like
...
int type_dialogs = CompWindowTypeDialogMask | CompWindowTypeModalDialogMask
                     | CompWindowTypeUtilMask;

if (window && (window->type () & type_dialogs))
...

all over the place, but this is a general compiz slop problem, and is fine for now. I'm going to add a //FIXME to add api to compiz and eventually replace this with some kind of window->IsModalDialog () call. This will get into the SRU but I'd like to see this fixed properly for O.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/Launcher.cpp'
2--- src/Launcher.cpp 2011-05-17 04:06:05 +0000
3+++ src/Launcher.cpp 2011-05-23 06:02:30 +0000
4@@ -1893,6 +1893,9 @@
5 CompWindowList window_list = _screen->windows ();
6 CompWindowList::iterator it;
7 CompWindow *window = NULL;
8+ CompWindow *parent = NULL;
9+ int type_dialogs = CompWindowTypeDialogMask | CompWindowTypeModalDialogMask
10+ | CompWindowTypeUtilMask;
11
12 bool any = false;
13 bool active = false;
14@@ -1902,7 +1905,11 @@
15 return;
16
17 window = _screen->findWindow (_screen->activeWindow ());
18- if (CheckIntersectWindow (window))
19+
20+ if (window && (window->type () & type_dialogs))
21+ parent = _screen->findWindow (window->transientFor ());
22+
23+ if (CheckIntersectWindow (window) || CheckIntersectWindow (parent))
24 {
25 any = true;
26 active = true;