Merge lp:~alan-griffiths/compiz-core/stop-dumping-windows-in-first-workspace into lp:compiz-core

Proposed by Alan Griffiths
Status: Merged
Merged at revision: 3092
Proposed branch: lp:~alan-griffiths/compiz-core/stop-dumping-windows-in-first-workspace
Merge into: lp:compiz-core
Diff against target: 19 lines (+3/-1)
1 file modified
src/window.cpp (+3/-1)
To merge this branch: bzr merge lp:~alan-griffiths/compiz-core/stop-dumping-windows-in-first-workspace
Reviewer Review Type Date Requested Status
Daniel van Vugt Approve
Sam Spilsbury Approve
Review via email: mp+101764@code.launchpad.net

Description of the change

Avoid dumping all the windows into first workspace when closing.

Reverts to correct logic used before r2838.

To post a comment you must log in.
Revision history for this message
Alan Griffiths (alan-griffiths) wrote :

From discussion with Sam:

"CompWindowNotifyUnreparent would call through to DecorWindow::windowNotify and then that would call reconfigureXWindow, which would then attempt to configure the destroyed frame and wrapper windows and move the client to 0,0 in its own parent window, which at this point, would be the root window (so the client moves to 0,0). I know this because its exactly the same problem I fixed last cycle :P

"The fix is to move the assignments (and the queue clear) to None to before that call. That will cause reconfigureXWindow to treat the window as an unreparented window, eg, correctly."

Revision history for this message
Sam Spilsbury (smspillaz) :
review: Approve
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Confirmed it works. The problem of windows being moved to the first workspace is solved.

I still have an issue where all windows rotate left by one workspace when I restart compiz. But that's obviously a different bug.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/window.cpp'
2--- src/window.cpp 2012-04-04 03:11:55 +0000
3+++ src/window.cpp 2012-04-12 15:56:24 +0000
4@@ -7171,7 +7171,6 @@
5 XDestroyWindow (screen->dpy (), serverFrame);
6 XDestroyWindow (screen->dpy (), wrapper);
7
8- window->windowNotify (CompWindowNotifyUnreparent);
9 /* This window is no longer "managed" in the
10 * reparenting sense so clear its pending event
11 * queue ... though maybe in future it would
12@@ -7182,4 +7181,7 @@
13 frame = None;
14 wrapper = None;
15 serverFrame = None;
16+
17+ // Finally, (i.e. after updating state) notify the change
18+ window->windowNotify (CompWindowNotifyUnreparent);
19 }

Subscribers

People subscribed via source and target branches