[Xfce4-commits] [xfce/xfwm4] 02/03: Fix to erratic unmaximization by dragging

noreply at xfce.org noreply at xfce.org
Fri Jan 19 19:15:56 CET 2018


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

o   l   i   v   i   e   r       p   u   s   h   e   d       a       c   o   m   m   i   t       t   o       b   r   a   n   c   h       m   a   s   t   e   r   
   in repository xfce/xfwm4.

commit 84b905b7854bc04b00b681588b8d9cbd7f29493e
Author: Adam Purkrt <adam at purkrt.net>
Date:   Thu Jan 18 19:52:15 2018 +0100

    Fix to erratic unmaximization by dragging
    
    Bug: 11960
    
    This patch fixes the erratic behaviour when unmaximizing a window by
    dragging it from the absolute top.
    
    clientToggleMaximized is now called with each motion event if
    a window is maximized, hence it is always unmaximized before possibly
    toggling maximization again in clientTile further down.
---
 src/moveresize.c | 58 +++++++++++++++++++++++---------------------------------
 1 file changed, 24 insertions(+), 34 deletions(-)

diff --git a/src/moveresize.c b/src/moveresize.c
index 8a23e76..3a75400 100644
--- a/src/moveresize.c
+++ b/src/moveresize.c
@@ -1032,47 +1032,37 @@ clientMoveEventFilter (XfwmEvent *event, gpointer data)
 
         if (FLAG_TEST (c->flags, CLIENT_FLAG_RESTORE_SIZE_POS))
         {
+            gboolean size_changed;
+            /* to keep the distance from the edges of the window proportional. */
+            double xratio, yratio;
 
-            if ((ABS (event->motion.x_root - passdata->mx) > 15) ||
-                (ABS (event->motion.y_root - passdata->my) > 15))
-            {
-                gboolean size_changed;
-                /* to keep the distance from the edges of the window proportional. */
-                double xratio, yratio;
+            xratio = (event->motion.x_root - frameExtentX (c)) / (double) frameExtentWidth (c);
+            yratio = (event->motion.y_root - frameExtentY (c)) / (double) frameExtentHeight (c);
 
-                xratio = (event->motion.x_root - frameExtentX (c)) / (double) frameExtentWidth (c);
-                yratio = (event->motion.y_root - frameExtentY (c)) / (double) frameExtentHeight (c);
+            size_changed = clientToggleMaximized (c, c->flags & CLIENT_FLAG_MAXIMIZED, FALSE);
+            if (clientRestoreSizePos (c))
+            {
+                size_changed = TRUE;
+            }
+            if (size_changed)
+            {
+                passdata->move_resized = TRUE;
 
-                size_changed = clientToggleMaximized (c, c->flags & CLIENT_FLAG_MAXIMIZED, FALSE);
-                if (clientRestoreSizePos (c))
+                passdata->ox = c->x;
+                passdata->mx = frameExtentX (c) + passdata->px;
+                if ((passdata->mx < frameExtentX (c)) || (passdata->mx > frameExtentX (c) + frameExtentWidth (c)))
                 {
-                    size_changed = TRUE;
+                    passdata->mx = CLAMP(frameExtentX (c) + frameExtentWidth (c) * xratio, frameExtentX (c), frameExtentX (c) + frameExtentWidth (c));
                 }
-                if (size_changed)
-                {
-                    passdata->move_resized = TRUE;
-
-                    passdata->ox = c->x;
-                    passdata->mx =  frameExtentX (c) + passdata->px;
-                    if ((passdata->mx <  frameExtentX (c)) || (passdata->mx >  frameExtentX (c) + frameExtentWidth (c)))
-                    {
-                        passdata->mx = CLAMP(frameExtentX (c) + frameExtentWidth (c) * xratio, frameExtentX (c), frameExtentX (c) + frameExtentWidth (c));
-                    }
 
-                    passdata->oy = c->y;
-                    passdata->my = frameExtentY (c) + passdata->py;
-                    if ((passdata->my < frameExtentY (c)) || (passdata->my > frameExtentY (c) + frameExtentHeight (c)))
-                    {
-                        passdata->my = CLAMP(frameExtentY (c) + frameExtentHeight (c) * yratio, frameExtentY (c), frameExtentY (c) + frameExtentHeight (c));
-                    }
-
-                    passdata->configure_flags = CFG_FORCE_REDRAW;
+                passdata->oy = c->y;
+                passdata->my = frameExtentY (c) + passdata->py;
+                if ((passdata->my < frameExtentY (c)) || (passdata->my > frameExtentY (c) + frameExtentHeight (c)))
+                {
+                    passdata->my = CLAMP(frameExtentY (c) + frameExtentHeight (c) * yratio, frameExtentY (c), frameExtentY (c) + frameExtentHeight (c));
                 }
-            }
-            else
-            {
-                event->motion.x_root = c->x - passdata->ox + passdata->mx;
-                event->motion.y_root = c->y - passdata->oy + passdata->my;
+
+                passdata->configure_flags = CFG_FORCE_REDRAW;
             }
         }
 

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


More information about the Xfce4-commits mailing list