1
0
Fork 0

window: Replace meta_window_resize_with_gravity with a frame-rect variant

More low-hanging fruit for our window geometry cleanups...
This commit is contained in:
Jasper St. Pierre 2014-05-20 18:28:56 -04:00
parent 43762da9d3
commit 1c94df2553
5 changed files with 32 additions and 48 deletions

View file

@ -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 void
meta_window_edge_resistance_for_resize (MetaWindow *window, meta_window_edge_resistance_for_resize (MetaWindow *window,
int old_width,
int old_height,
int *new_width, int *new_width,
int *new_height, int *new_height,
int gravity, int gravity,
@ -1237,8 +1232,8 @@ meta_window_edge_resistance_for_resize (MetaWindow *window,
gboolean is_resize; gboolean is_resize;
meta_window_get_frame_rect (window, &old_outer); meta_window_get_frame_rect (window, &old_outer);
proposed_outer_width = old_outer.width + (*new_width - old_width); proposed_outer_width = *new_width;
proposed_outer_height = old_outer.height + (*new_height - old_height); proposed_outer_height = *new_height;
meta_rectangle_resize_with_gravity (&old_outer, meta_rectangle_resize_with_gravity (&old_outer,
&new_outer, &new_outer,
gravity, gravity,
@ -1256,8 +1251,8 @@ meta_window_edge_resistance_for_resize (MetaWindow *window,
is_keyboard_op, is_keyboard_op,
is_resize)) is_resize))
{ {
*new_width = old_width + (new_outer.width - old_outer.width); *new_width = new_outer.width;
*new_height = old_height + (new_outer.height - old_outer.height); *new_height = new_outer.height;
meta_topic (META_DEBUG_EDGE_RESISTANCE, meta_topic (META_DEBUG_EDGE_RESISTANCE,
"outer width & height got changed from %d,%d to %d,%d\n", "outer width & height got changed from %d,%d to %d,%d\n",

View file

@ -33,8 +33,6 @@ void meta_window_edge_resistance_for_move (MetaWindow *window,
gboolean snap, gboolean snap,
gboolean is_keyboard_op); gboolean is_keyboard_op);
void meta_window_edge_resistance_for_resize (MetaWindow *window, void meta_window_edge_resistance_for_resize (MetaWindow *window,
int old_width,
int old_height,
int *new_width, int *new_width,
int *new_height, int *new_height,
int gravity, int gravity,

View file

@ -2166,6 +2166,7 @@ process_keyboard_resize_grab (MetaDisplay *display,
MetaWindow *window, MetaWindow *window,
ClutterKeyEvent *event) ClutterKeyEvent *event)
{ {
MetaRectangle frame_rect;
gboolean handled; gboolean handled;
int height_inc; int height_inc;
int width_inc; int width_inc;
@ -2202,6 +2203,10 @@ process_keyboard_resize_grab (MetaDisplay *display,
width = window->rect.width; width = window->rect.width;
height = window->rect.height; 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); gravity = meta_resize_gravity_from_grab_op (display->grab_op);
smart_snap = (event->modifier_state & CLUTTER_SHIFT_MASK) != 0; smart_snap = (event->modifier_state & CLUTTER_SHIFT_MASK) != 0;
@ -2359,18 +2364,13 @@ process_keyboard_resize_grab (MetaDisplay *display,
if (handled) if (handled)
{ {
MetaRectangle old_rect;
meta_topic (META_DEBUG_KEYBINDINGS, meta_topic (META_DEBUG_KEYBINDINGS,
"Computed new window size due to keypress: " "Computed new window size due to keypress: "
"%dx%d, gravity %s\n", "%dx%d, gravity %s\n",
width, height, meta_gravity_to_string (gravity)); width, height, meta_gravity_to_string (gravity));
old_rect = window->rect; /* Don't actually care about x,y */
/* Do any edge resistance/snapping */ /* Do any edge resistance/snapping */
meta_window_edge_resistance_for_resize (window, meta_window_edge_resistance_for_resize (window,
old_rect.width,
old_rect.height,
&width, &width,
&height, &height,
gravity, gravity,
@ -2378,15 +2378,11 @@ process_keyboard_resize_grab (MetaDisplay *display,
smart_snap, smart_snap,
TRUE); TRUE);
/* We don't need to update unless the specified width and height meta_window_resize_frame_with_gravity (window,
* are actually different from what we had before. TRUE,
*/ width,
if (window->rect.width != width || window->rect.height != height) height,
meta_window_resize_with_gravity (window, gravity);
TRUE,
width,
height,
gravity);
meta_window_update_keyboard_resize (window, FALSE); meta_window_update_keyboard_resize (window, FALSE);
} }

View file

@ -539,8 +539,6 @@ void meta_window_update_fullscreen_monitors (MetaWindow *window,
unsigned long left, unsigned long left,
unsigned long right); unsigned long right);
/* args to move are window pos, not frame pos */
void meta_window_move (MetaWindow *window, void meta_window_move (MetaWindow *window,
gboolean user_op, gboolean user_op,
int root_x_nw, int root_x_nw,
@ -551,11 +549,12 @@ void meta_window_move_resize (MetaWindow *window,
int root_y_nw, int root_y_nw,
int w, int w,
int h); int h);
void meta_window_resize_with_gravity (MetaWindow *window, void meta_window_resize_frame_with_gravity (MetaWindow *window,
gboolean user_op, gboolean user_op,
int w, int w,
int h, int h,
int gravity); int gravity);
void meta_window_change_workspace (MetaWindow *window, void meta_window_change_workspace (MetaWindow *window,
MetaWorkspace *workspace); MetaWorkspace *workspace);

View file

@ -3176,10 +3176,12 @@ meta_window_unmaximize_with_gravity (MetaWindow *window,
{ {
MetaRectangle desired_rect; MetaRectangle desired_rect;
meta_window_get_position (window, &desired_rect.x, &desired_rect.y);
desired_rect.width = new_width; desired_rect.width = new_width;
desired_rect.height = new_height; 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); meta_window_unmaximize_internal (window, directions, &desired_rect, gravity);
} }
@ -3910,11 +3912,11 @@ meta_window_move_resize (MetaWindow *window,
} }
void void
meta_window_resize_with_gravity (MetaWindow *window, meta_window_resize_frame_with_gravity (MetaWindow *window,
gboolean user_op, gboolean user_op,
int w, int w,
int h, int h,
int gravity) int gravity)
{ {
MetaMoveResizeFlags flags; MetaMoveResizeFlags flags;
MetaRectangle rect; MetaRectangle rect;
@ -3922,6 +3924,8 @@ meta_window_resize_with_gravity (MetaWindow *window,
rect.width = w; rect.width = w;
rect.height = h; 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; flags = (user_op ? META_IS_USER_ACTION : 0) | META_IS_RESIZE_ACTION;
meta_window_move_resize_internal (window, flags, gravity, rect); meta_window_move_resize_internal (window, flags, gravity, rect);
} }
@ -5998,7 +6002,7 @@ update_resize (MetaWindow *window,
window->display->grab_resize_timeout_id = 0; 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 /* 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, * 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 */ /* Do any edge resistance/snapping */
meta_window_edge_resistance_for_resize (window, meta_window_edge_resistance_for_resize (window,
old.width,
old.height,
&new_w, &new_w,
&new_h, &new_h,
gravity, gravity,
@ -6037,13 +6039,7 @@ update_resize (MetaWindow *window,
if (new_unmaximize == window->display->grab_resize_unmaximize) if (new_unmaximize == window->display->grab_resize_unmaximize)
{ {
/* We don't need to update unless the specified width and height meta_window_resize_frame_with_gravity (window, TRUE, new_w, new_h, gravity);
* 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);
}
} }
else else
{ {