David Barth has proposed merging lp:~dbarth/compiz/packaging.fix into lp:compiz.
Requested reviews: compiz packagers (compiz) For more details, see: https://code.launchpad.net/~dbarth/compiz/packaging.fix/+merge/55298 Drop 090_git_fix_new_invisible_windows since the patch is now on trunk -- https://code.launchpad.net/~dbarth/compiz/packaging.fix/+merge/55298 Your team compiz packagers is requested to review the proposed merge of lp:~dbarth/compiz/packaging.fix into lp:compiz.
=== removed file 'debian/patches/090_git_fix_new_invisible_windows.patch' --- debian/patches/090_git_fix_new_invisible_windows.patch 2011-03-23 16:36:04 +0000 +++ debian/patches/090_git_fix_new_invisible_windows.patch 1970-01-01 00:00:00 +0000 @@ -1,125 +0,0 @@ -From e4489612952606501869d63b8119bed61d8ee4ed Mon Sep 17 00:00:00 2001 -From: Sam Spilsbury <[email protected]> -Date: Wed, 23 Mar 2011 22:36:30 +0800 -Subject: [PATCH] Don't treat synthetic UnmapNotify the same as the real UnmapNotify - -ICCCM section 4.1.4 says that applications need to send us a synthetic -UnmapNotify to tell us that the window has been withdrawn in all cases -to cover the case where a window is already unmapped and then withdrawn. - -In this case we should handle the UnmapNotify as a request to withdraw -the window, but we should only handle the *real* UnmapNotify request -as a request to actually process the window being unmapped and withdraw -it there, rather than processing both twice and withdrawing the window -twice ---- - src/event.cpp | 38 ++++++++++++++++++++++++-------------- - src/privatewindow.h | 2 ++ - src/window.cpp | 11 +++++++++++ - 3 files changed, 37 insertions(+), 14 deletions(-) - -diff --git a/src/event.cpp b/src/event.cpp -index 5c0769d..b27e8b5 100644 ---- a/src/event.cpp -+++ b/src/event.cpp -@@ -1122,7 +1122,7 @@ CompScreen::handleEvent (XEvent *event) - * and then bypassing MapRequest because it *is* override-redirect - * at XMapWindow time, so we need to catch this case and make - * sure that windows are tracked here */ -- -+ - foreach (CoreWindow *cw, priv->createdWindows) - { - if (cw->priv->id == event->xmap.window) -@@ -1184,30 +1184,40 @@ CompScreen::handleEvent (XEvent *event) - } - else /* X -> Withdrawn */ - { -- /* Iconic -> Withdrawn */ -+ /* Iconic -> Withdrawn: -+ * -+ * The window is already unmapped so we need to check the -+ * synthetic UnmapNotify that comes and withdraw the window here */ - if (w->state () & CompWindowStateHiddenMask) - { - w->priv->minimized = false; -- - w->changeState (w->state () & ~CompWindowStateHiddenMask); - - priv->updateClientList (); -+ w->priv->withdraw (); - } -- else /* Closing */ -+ /* Closing: -+ * -+ * ICCCM Section 4.1.4 says that clients need to send -+ * a synthetic UnmapNotify for every real unmap -+ * in order to reflect the change in state, but -+ * since we already withdraw the window on the real -+ * UnmapNotify, no need to do it again on the synthetic -+ * one. */ -+ else if (!event->xunmap.send_event) -+ { - w->windowNotify (CompWindowNotifyClose); -- -- if (!w->overrideRedirect ()) -- priv->setWmState (WithdrawnState, w->id ()); -- -- w->priv->placed = false; -- w->priv->unmanaging = w->priv->managed; -- w->priv->managed = false; -+ w->priv->withdraw (); -+ } - } - -- w->unmap (); -+ if (!event->xunmap.send_event) -+ { -+ w->unmap (); - -- if (!w->shaded () && !w->priv->pendingMaps) -- w->moveInputFocusToOtherWindow (); -+ if (!w->shaded () && !w->priv->pendingMaps) -+ w->moveInputFocusToOtherWindow (); -+ } - } - break; - case ReparentNotify: -diff --git a/src/privatewindow.h b/src/privatewindow.h -index 4bed1bc..2b2d6a4 100644 ---- a/src/privatewindow.h -+++ b/src/privatewindow.h -@@ -137,6 +137,8 @@ class PrivateWindow { - - void show (); - -+ void withdraw (); -+ - bool handlePingTimeout (unsigned int lastPing); - - void handlePing (int lastPing); -diff --git a/src/window.cpp b/src/window.cpp -index 53fe4d8..7ea63ba 100644 ---- a/src/window.cpp -+++ b/src/window.cpp -@@ -1365,6 +1365,17 @@ CompWindow::unmap () - windowNotify (CompWindowNotifyUnmap); - } - -+void -+PrivateWindow::withdraw () -+{ -+ if (!attrib.override_redirect) -+ screen->priv->setWmState (WithdrawnState, id); -+ -+ placed = false; -+ unmanaging = managed; -+ managed = false; -+} -+ - bool - PrivateWindow::restack (Window aboveId) - { --- -1.7.4.1 - === modified file 'debian/patches/series' --- debian/patches/series 2011-03-24 11:03:37 +0000 +++ debian/patches/series 2011-03-29 09:40:56 +0000 @@ -7,5 +7,4 @@ 065_add_bailer_and_detection_plugins.patch 085_add_grid_plugin.patch 086_new_grid_defaults.patch -090_git_fix_new_invisible_windows.patch 100_bump_core.h.patch
_______________________________________________ Mailing list: https://launchpad.net/~compiz Post to : [email protected] Unsubscribe : https://launchpad.net/~compiz More help : https://help.launchpad.net/ListHelp

