[mutter] window-wayland: Fix interactive resizing from the top/left once more



commit 57bb297450b491f1db364355dcbaf1f89d966b32
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Thu May 1 18:55:34 2014 -0400

    window-wayland: Fix interactive resizing from the top/left once more
    
    Ugh. So in the fullscreen case, we need to make sure to specify that
    it's a MOVE_ACTION so that we move to the saved position, but we
    can't do that in the resizing case since we need to use the resized
    rectangle.
    
    The flags are really hurting us here. Perhaps we should make it the
    client's responsibility to specify a complete rectangle which we
    could resize to; then the weird-o logic would be self-contained in
    each front-end.
    
    I'm not convinced this covers all cases, especially when we could have
    a dangling weird state pointer, but it fixes our existing two testcases.

 src/wayland/window-wayland.c |   26 +++++++++++++-------------
 1 files changed, 13 insertions(+), 13 deletions(-)
---
diff --git a/src/wayland/window-wayland.c b/src/wayland/window-wayland.c
index 80ea30e..0e6e9b7 100644
--- a/src/wayland/window-wayland.c
+++ b/src/wayland/window-wayland.c
@@ -222,21 +222,21 @@ meta_window_wayland_move_resize (MetaWindow *window,
 
   flags = META_IS_WAYLAND_RESIZE;
 
-  if (wl_window->has_saved_pos)
-    {
-      x = wl_window->saved_x;
-      y = wl_window->saved_y;
-      wl_window->has_saved_pos = FALSE;
-      flags |= META_IS_MOVE_ACTION;
-    }
-  else
-    {
-      meta_window_get_position (window, &x, &y);
-    }
-
-  /* dx/dy are ignored during resizing */
+  /* x/y are ignored when we're doing interactive resizing */
   if (!meta_grab_op_is_resizing (window->display->grab_op))
     {
+      if (wl_window->has_saved_pos)
+        {
+          x = wl_window->saved_x;
+          y = wl_window->saved_y;
+          wl_window->has_saved_pos = FALSE;
+          flags |= META_IS_MOVE_ACTION;
+        }
+      else
+        {
+          meta_window_get_position (window, &x, &y);
+        }
+
       if (dx != 0 || dy != 0)
         {
           x += dx;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]