[mutter] window: Replace meta_window_resize_with_gravity with a frame-rect variant



commit 1c94df25534d089af240d2549d5b2b10592c30e5
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Tue May 20 18:28:56 2014 -0400

    window: Replace meta_window_resize_with_gravity with a frame-rect variant
    
    More low-hanging fruit for our window geometry cleanups...

 src/core/edge-resistance.c |   13 ++++---------
 src/core/edge-resistance.h |    2 --
 src/core/keybindings.c     |   24 ++++++++++--------------
 src/core/window-private.h  |   13 ++++++-------
 src/core/window.c          |   28 ++++++++++++----------------
 5 files changed, 32 insertions(+), 48 deletions(-)
---
diff --git a/src/core/edge-resistance.c b/src/core/edge-resistance.c
index 50abef9..6e348eb 100644
--- a/src/core/edge-resistance.c
+++ b/src/core/edge-resistance.c
@@ -1218,13 +1218,8 @@ meta_window_edge_resistance_for_move (MetaWindow  *window,
     }
 }
 
-/* Note that old_(width|height) and new_(width|height) are with respect to
- * sizes of the inner window.
- */
 void
 meta_window_edge_resistance_for_resize (MetaWindow  *window,
-                                        int          old_width,
-                                        int          old_height,
                                         int         *new_width,
                                         int         *new_height,
                                         int          gravity,
@@ -1237,8 +1232,8 @@ meta_window_edge_resistance_for_resize (MetaWindow  *window,
   gboolean is_resize;
 
   meta_window_get_frame_rect (window, &old_outer);
-  proposed_outer_width  = old_outer.width  + (*new_width  - old_width);
-  proposed_outer_height = old_outer.height + (*new_height - old_height);
+  proposed_outer_width  = *new_width;
+  proposed_outer_height = *new_height;
   meta_rectangle_resize_with_gravity (&old_outer,
                                       &new_outer,
                                       gravity,
@@ -1256,8 +1251,8 @@ meta_window_edge_resistance_for_resize (MetaWindow  *window,
                                           is_keyboard_op,
                                           is_resize))
     {
-      *new_width  = old_width  + (new_outer.width  - old_outer.width);
-      *new_height = old_height + (new_outer.height - old_outer.height);
+      *new_width = new_outer.width;
+      *new_height = new_outer.height;
 
       meta_topic (META_DEBUG_EDGE_RESISTANCE,
                   "outer width & height got changed from %d,%d to %d,%d\n",
diff --git a/src/core/edge-resistance.h b/src/core/edge-resistance.h
index caf56bb..717f4d9 100644
--- a/src/core/edge-resistance.h
+++ b/src/core/edge-resistance.h
@@ -33,8 +33,6 @@ void        meta_window_edge_resistance_for_move   (MetaWindow  *window,
                                                     gboolean     snap,
                                                     gboolean     is_keyboard_op);
 void        meta_window_edge_resistance_for_resize (MetaWindow  *window,
-                                                    int          old_width,
-                                                    int          old_height,
                                                     int         *new_width,
                                                     int         *new_height,
                                                     int          gravity,
diff --git a/src/core/keybindings.c b/src/core/keybindings.c
index e9687c1..940c43e 100644
--- a/src/core/keybindings.c
+++ b/src/core/keybindings.c
@@ -2166,6 +2166,7 @@ process_keyboard_resize_grab (MetaDisplay     *display,
                               MetaWindow      *window,
                               ClutterKeyEvent *event)
 {
+  MetaRectangle frame_rect;
   gboolean handled;
   int height_inc;
   int width_inc;
@@ -2202,6 +2203,10 @@ process_keyboard_resize_grab (MetaDisplay     *display,
   width = window->rect.width;
   height = window->rect.height;
 
+  meta_window_get_frame_rect (window, &frame_rect);
+  width = frame_rect.width;
+  height = frame_rect.height;
+
   gravity = meta_resize_gravity_from_grab_op (display->grab_op);
 
   smart_snap = (event->modifier_state & CLUTTER_SHIFT_MASK) != 0;
@@ -2359,18 +2364,13 @@ process_keyboard_resize_grab (MetaDisplay     *display,
 
   if (handled)
     {
-      MetaRectangle old_rect;
       meta_topic (META_DEBUG_KEYBINDINGS,
                   "Computed new window size due to keypress: "
                   "%dx%d, gravity %s\n",
                   width, height, meta_gravity_to_string (gravity));
 
-      old_rect = window->rect;  /* Don't actually care about x,y */
-
       /* Do any edge resistance/snapping */
       meta_window_edge_resistance_for_resize (window,
-                                              old_rect.width,
-                                              old_rect.height,
                                               &width,
                                               &height,
                                               gravity,
@@ -2378,15 +2378,11 @@ process_keyboard_resize_grab (MetaDisplay     *display,
                                               smart_snap,
                                               TRUE);
 
-      /* We don't need to update unless the specified width and height
-       * are actually different from what we had before.
-       */
-      if (window->rect.width != width || window->rect.height != height)
-        meta_window_resize_with_gravity (window,
-                                         TRUE,
-                                         width,
-                                         height,
-                                         gravity);
+      meta_window_resize_frame_with_gravity (window,
+                                             TRUE,
+                                             width,
+                                             height,
+                                             gravity);
 
       meta_window_update_keyboard_resize (window, FALSE);
     }
diff --git a/src/core/window-private.h b/src/core/window-private.h
index 35dfb77..7ac184e 100644
--- a/src/core/window-private.h
+++ b/src/core/window-private.h
@@ -539,8 +539,6 @@ void        meta_window_update_fullscreen_monitors (MetaWindow    *window,
                                                     unsigned long  left,
                                                     unsigned long  right);
 
-
-/* args to move are window pos, not frame pos */
 void        meta_window_move               (MetaWindow  *window,
                                             gboolean     user_op,
                                             int          root_x_nw,
@@ -551,11 +549,12 @@ void        meta_window_move_resize        (MetaWindow  *window,
                                             int          root_y_nw,
                                             int          w,
                                             int          h);
-void        meta_window_resize_with_gravity (MetaWindow  *window,
-                                             gboolean     user_op,
-                                             int          w,
-                                             int          h,
-                                             int          gravity);
+void        meta_window_resize_frame_with_gravity (MetaWindow  *window,
+                                                   gboolean     user_op,
+                                                   int          w,
+                                                   int          h,
+                                                   int          gravity);
+
 void        meta_window_change_workspace   (MetaWindow  *window,
                                             MetaWorkspace *workspace);
 
diff --git a/src/core/window.c b/src/core/window.c
index 749ceb5..b5cb063 100644
--- a/src/core/window.c
+++ b/src/core/window.c
@@ -3176,10 +3176,12 @@ meta_window_unmaximize_with_gravity (MetaWindow        *window,
 {
   MetaRectangle desired_rect;
 
-  meta_window_get_position (window, &desired_rect.x, &desired_rect.y);
   desired_rect.width = new_width;
   desired_rect.height = new_height;
 
+  meta_window_frame_rect_to_client_rect (window, &desired_rect, &desired_rect);
+
+  meta_window_get_position (window, &desired_rect.x, &desired_rect.y);
   meta_window_unmaximize_internal (window, directions, &desired_rect, gravity);
 }
 
@@ -3910,11 +3912,11 @@ meta_window_move_resize (MetaWindow  *window,
 }
 
 void
-meta_window_resize_with_gravity (MetaWindow *window,
-                                 gboolean     user_op,
-                                 int          w,
-                                 int          h,
-                                 int          gravity)
+meta_window_resize_frame_with_gravity (MetaWindow *window,
+                                       gboolean     user_op,
+                                       int          w,
+                                       int          h,
+                                       int          gravity)
 {
   MetaMoveResizeFlags flags;
   MetaRectangle rect;
@@ -3922,6 +3924,8 @@ meta_window_resize_with_gravity (MetaWindow *window,
   rect.width = w;
   rect.height = h;
 
+  meta_window_frame_rect_to_client_rect (window, &rect, &rect);
+
   flags = (user_op ? META_IS_USER_ACTION : 0) | META_IS_RESIZE_ACTION;
   meta_window_move_resize_internal (window, flags, gravity, rect);
 }
@@ -5998,7 +6002,7 @@ update_resize (MetaWindow *window,
       window->display->grab_resize_timeout_id = 0;
     }
 
-  old = window->rect;  /* Don't actually care about x,y */
+  meta_window_get_frame_rect (window, &old);
 
   /* One sided resizing ought to actually be one-sided, despite the fact that
    * aspect ratio windows don't interact nicely with the above stuff.  So,
@@ -6026,8 +6030,6 @@ update_resize (MetaWindow *window,
 
   /* Do any edge resistance/snapping */
   meta_window_edge_resistance_for_resize (window,
-                                          old.width,
-                                          old.height,
                                           &new_w,
                                           &new_h,
                                           gravity,
@@ -6037,13 +6039,7 @@ update_resize (MetaWindow *window,
 
   if (new_unmaximize == window->display->grab_resize_unmaximize)
     {
-      /* We don't need to update unless the specified width and height
-       * are actually different from what we had before.
-       */
-      if (old.width != new_w || old.height != new_h)
-        {
-          meta_window_resize_with_gravity (window, TRUE, new_w, new_h, gravity);
-        }
+      meta_window_resize_frame_with_gravity (window, TRUE, new_w, new_h, gravity);
     }
   else
     {


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