[Xfce4-commits] <xfwm4:master> Recompute windows' positions even if the global size of the screen has not changed because a change in the layout may keep the overall screen size unchanged and yet windows might have become unreachable dut to the change in the actual layout.

Olivier Fourdan noreply at xfce.org
Mon Oct 12 09:52:01 CEST 2009


Updating branch refs/heads/master
         to 7c33b2ee5005bd2394802a83eee9e379af103b4e (commit)
       from ba38bf2c5240a5663a47827b3a516c3bd9ddab91 (commit)

commit 7c33b2ee5005bd2394802a83eee9e379af103b4e
Author: Olivier Fourdan <fourdan at xfce.org>
Date:   Mon Oct 12 09:48:38 2009 +0200

    Recompute windows' positions even if the global size of the screen has not changed because a change in the layout may keep the overall screen size unchanged and yet windows might have become unreachable dut to the change in the actual layout.

 src/events.c |   19 ++++++++-----------
 1 files changed, 8 insertions(+), 11 deletions(-)

diff --git a/src/events.c b/src/events.c
index b4e860b..4e6a400 100644
--- a/src/events.c
+++ b/src/events.c
@@ -2716,11 +2716,13 @@ size_changed_cb(GdkScreen *gscreen, gpointer data)
 {
     ScreenInfo *screen_info;
     DisplayInfo *display_info;
+    gboolean size_changed;
 
     TRACE ("entering size_changed_cb");
 
     screen_info = (ScreenInfo *) data;
     g_return_if_fail (screen_info);
+    display_info = screen_info->display_info;
 
     /*
      * We have added/removed a monitor or even changed the layout,
@@ -2733,21 +2735,16 @@ size_changed_cb(GdkScreen *gscreen, gpointer data)
     screen_info->cache_monitor.width = 0;
     screen_info->cache_monitor.height = 0;
 
-    /*
-     * If the overall size of the screen hasn't changed,
-     * there is no need to continue any further...
-     */
-    if (!myScreenComputeSize (screen_info))
-    {
-        return;
-    }
-    display_info = screen_info->display_info;
-
+    size_changed = myScreenComputeSize (screen_info);
     setNetWorkarea (display_info, screen_info->xroot, screen_info->workspace_count,
                     screen_info->width, screen_info->height, screen_info->margins);
     placeSidewalks (screen_info, screen_info->params->wrap_workspaces);
     clientScreenResize (screen_info);
-    compositorUpdateScreenSize (screen_info);
+
+    if (size_changed)
+    {
+        compositorUpdateScreenSize (screen_info);
+    }
 }
 
 static void



More information about the Xfce4-commits mailing list