Updating branch refs/heads/xfce-4.10
         to 0b39bbe0b3b5bf514dea223ec96cd25ea4e1444f (commit)
       from 9a1a9e8ea8ed8ba6ef5289c0db119d23ac652ef4 (commit)

commit 0b39bbe0b3b5bf514dea223ec96cd25ea4e1444f
Author: Olivier Fourdan <four...@xfce.org>
Date:   Wed Jul 18 22:12:07 2012 +0200

    Implement NET_WM_MOVERESIZE_CANCEL message (bug #8949)
    
    as gtk+-3.4 now uses it.

 src/display.h    |    3 ++-
 src/moveresize.c |   15 +++++++++++++--
 src/netwm.c      |    7 ++++++-
 3 files changed, 21 insertions(+), 4 deletions(-)

diff --git a/src/display.h b/src/display.h
index 1ad2ef8..8797237 100644
--- a/src/display.h
+++ b/src/display.h
@@ -163,7 +163,8 @@ enum
     NET_WM_MOVERESIZE_SIZE_LEFT,
     NET_WM_MOVERESIZE_MOVE,
     NET_WM_MOVERESIZE_SIZE_KEYBOARD,
-    NET_WM_MOVERESIZE_MOVE_KEYBOARD
+    NET_WM_MOVERESIZE_MOVE_KEYBOARD,
+    NET_WM_MOVERESIZE_CANCEL
 };
 
 enum
diff --git a/src/moveresize.c b/src/moveresize.c
index 9893c30..a98bdf7 100644
--- a/src/moveresize.c
+++ b/src/moveresize.c
@@ -827,7 +827,7 @@ clientMoveEventFilter (XEvent * xevent, gpointer data)
     eventFilterStatus status = EVENT_FILTER_STOP;
     MoveResizeData *passdata = (MoveResizeData *) data;
     Client *c = NULL;
-    gboolean moving = TRUE;
+    gboolean moving;
     XWindowChanges wc;
     int prev_x, prev_y;
 
@@ -840,6 +840,12 @@ clientMoveEventFilter (XEvent * xevent, gpointer data)
     display_info = screen_info->display_info;
     configure_flags = NO_CFG_FLAG;
 
+    /*
+     * Clients may choose to end the move operation,
+     * we use XFWM_FLAG_MOVING_RESIZING for that.
+     */
+    moving = FLAG_TEST (c->xfwm_flags, XFWM_FLAG_MOVING_RESIZING);
+
     /* Update the display time */
     myDisplayUpdateCurrentTime (display_info, xevent);
 
@@ -1294,7 +1300,12 @@ clientResizeEventFilter (XEvent * xevent, gpointer data)
     screen_info = c->screen_info;
     display_info = screen_info->display_info;
     status = EVENT_FILTER_STOP;
-    resizing = TRUE;
+
+    /*
+     * Clients may choose to end the resize operation,
+     * we use XFWM_FLAG_MOVING_RESIZING for that.
+     */
+    resizing = FLAG_TEST (c->xfwm_flags, XFWM_FLAG_MOVING_RESIZING);
 
     frame_x = frameX (c);
     frame_y = frameY (c);
diff --git a/src/netwm.c b/src/netwm.c
index 545e64a..1352f08 100644
--- a/src/netwm.c
+++ b/src/netwm.c
@@ -695,10 +695,15 @@ clientNetMoveResize (Client * c, XClientMessageEvent * ev)
             resize = TRUE; /* Resize */
             break;
         case NET_WM_MOVERESIZE_MOVE:
-        default:
             event->type = ButtonPress;
             resize = FALSE; /* Move */
             break;
+        case NET_WM_MOVERESIZE_CANCEL:
+            FLAG_UNSET (c->xfwm_flags, XFWM_FLAG_MOVING_RESIZING);
+            /* Walk through */
+        default: /* Do nothing */
+            return;
+            break;
     }
 
     if (!FLAG_TEST (c->flags, CLIENT_FLAG_FULLSCREEN))
_______________________________________________
Xfce4-commits mailing list
Xfce4-commits@xfce.org
https://mail.xfce.org/mailman/listinfo/xfce4-commits

Reply via email to