[Xfce4-commits] [xfce/xfwm4] 02/02: Fix reconfigure when toggling maximize state

noreply at xfce.org noreply at xfce.org
Sat Jan 10 00:11:27 CET 2015


This is an automated email from the git hooks/post-receive script.

olivier pushed a commit to branch master
in repository xfce/xfwm4.

commit 91d60fbbb4d360fba484f4e89f8a8073d2e817f9
Author: Olivier Fourdan <fourdan at xfce.org>
Date:   Sat Jan 10 00:10:24 2015 +0100

    Fix reconfigure when toggling maximize state
    
    Signed-off-by: Olivier Fourdan <fourdan at xfce.org>
---
 src/moveresize.c |   32 ++++++++++++++------------------
 1 file changed, 14 insertions(+), 18 deletions(-)

diff --git a/src/moveresize.c b/src/moveresize.c
index 3b59999..bd8cae6 100644
--- a/src/moveresize.c
+++ b/src/moveresize.c
@@ -70,6 +70,7 @@ struct _MoveResizeData
     gint cancel_x, cancel_y;
     gint cancel_w, cancel_h;
     unsigned long cancel_flags;
+    unsigned long configure_flags;
     guint cancel_workspace;
     gint mx, my;
     gint px, py; /* pointer relative position */
@@ -822,7 +823,6 @@ static eventFilterStatus
 clientMoveEventFilter (XEvent * xevent, gpointer data)
 {
     static gboolean toggled_maximize = FALSE;
-    unsigned long configure_flags;
     ScreenInfo *screen_info;
     DisplayInfo *display_info;
     eventFilterStatus status = EVENT_FILTER_STOP;
@@ -840,7 +840,6 @@ clientMoveEventFilter (XEvent * xevent, gpointer data)
     prev_y=c->y;
     screen_info = c->screen_info;
     display_info = screen_info->display_info;
-    configure_flags = NO_CFG_FLAG;
 
     /*
      * Clients may choose to end the move operation,
@@ -898,16 +897,6 @@ clientMoveEventFilter (XEvent * xevent, gpointer data)
             c->width = passdata->cancel_w;
             c->height = passdata->cancel_h;
 
-            if (screen_info->params->box_move)
-            {
-                clientDrawOutline (c);
-            }
-            else
-            {
-                wc.x = c->x;
-                wc.y = c->y;
-                clientConfigure (c, &wc, CWX | CWY, configure_flags);
-            }
             if (screen_info->current_ws != passdata->cancel_workspace)
             {
                 workspaceSwitch (screen_info, passdata->cancel_workspace, c, FALSE, xevent->xkey.time);
@@ -915,14 +904,18 @@ clientMoveEventFilter (XEvent * xevent, gpointer data)
             cancel_maximize_flags = passdata->cancel_flags & CLIENT_FLAG_MAXIMIZED;
             if (!FLAG_TEST_AND_NOT(c->flags, cancel_maximize_flags, CLIENT_FLAG_MAXIMIZED))
             {
-                /* Toggle maximize on the differences between the current state and the canceled state */
+                /* Toggle maximize on the differences between the current state and the cancelled state */
                 cancel_maximize_flags ^= c->flags & CLIENT_FLAG_MAXIMIZED;
                 if (clientToggleMaximized (c, cancel_maximize_flags, FALSE))
                 {
-                    configure_flags = CFG_FORCE_REDRAW;
+                    passdata->configure_flags = CFG_FORCE_REDRAW;
                     passdata->move_resized = TRUE;
                 }
             }
+            if (screen_info->params->box_move)
+            {
+                clientDrawOutline (c);
+            }
         }
         else if (passdata->use_keys)
         {
@@ -990,7 +983,7 @@ clientMoveEventFilter (XEvent * xevent, gpointer data)
                         passdata->my = CLAMP(frameExtentY (c) + frameExtentHeight (c) * yratio, frameExtentY (c), frameExtentY (c) + frameExtentHeight (c));
                     }
 
-                    configure_flags = CFG_FORCE_REDRAW;
+                    passdata->configure_flags = CFG_FORCE_REDRAW;
                 }
             }
             else
@@ -1010,7 +1003,7 @@ clientMoveEventFilter (XEvent * xevent, gpointer data)
             if ((clientConstrainPos (c, FALSE) & CLIENT_CONSTRAINED_TOP) &&
                  clientToggleMaximized (c, CLIENT_FLAG_MAXIMIZED, FALSE))
             {
-                configure_flags = CFG_FORCE_REDRAW;
+                passdata->configure_flags = CFG_FORCE_REDRAW;
                 toggled_maximize = FALSE;
                 passdata->move_resized = TRUE;
             }
@@ -1044,7 +1037,9 @@ clientMoveEventFilter (XEvent * xevent, gpointer data)
 
             wc.x = c->x;
             wc.y = c->y;
-            clientConfigure (c, &wc, changes, configure_flags);
+            clientConfigure (c, &wc, changes, passdata->configure_flags);
+            /* Configure applied, clear the flags */
+            passdata->configure_flags = NO_CFG_FLAG;
         }
     }
     else if ((xevent->type == UnmapNotify) && (xevent->xunmap.window == c->window))
@@ -1113,6 +1108,7 @@ clientMove (Client * c, XEvent * ev)
     passdata.cancel_w = c->width;
     passdata.cancel_h = c->height;
     passdata.cancel_flags = c->flags;
+    passdata.configure_flags = NO_CFG_FLAG;
     passdata.cancel_workspace = c->win_workspace;
     passdata.use_keys = FALSE;
     passdata.grab = FALSE;
@@ -1210,7 +1206,7 @@ clientMove (Client * c, XEvent * ev)
         wc.height = c->height;
         changes |= CWWidth | CWHeight;
     }
-    clientConfigure (c, &wc, changes, NO_CFG_FLAG);
+    clientConfigure (c, &wc, changes, passdata.configure_flags);
 
     if (!passdata.released)
     {

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Xfce4-commits mailing list