diff --git a/src/core/window.c b/src/core/window.c index 09f6fd3d0..9aa962cf2 100644 --- a/src/core/window.c +++ b/src/core/window.c @@ -6147,6 +6147,24 @@ update_resize (MetaWindow *window, g_get_current_time (&window->display->grab_last_moveresize_time); } +static void +maybe_maximize_tiled_window (MetaWindow *window) +{ + MetaRectangle work_area; + gint shake_threshold; + + if (!META_WINDOW_TILED_SIDE_BY_SIDE (window)) + return; + + shake_threshold = meta_prefs_get_drag_threshold (); + + meta_window_get_work_area_for_monitor (window, + window->tile_monitor_number, + &work_area); + if (window->rect.width >= work_area.width - shake_threshold) + meta_window_maximize (window, META_MAXIMIZE_BOTH); +} + void meta_window_update_resize (MetaWindow *window, gboolean snap, @@ -6190,6 +6208,7 @@ end_grab_op (MetaWindow *window, modifiers & CLUTTER_SHIFT_MASK, x, y, TRUE); + maybe_maximize_tiled_window (window); } } window->screen->preview_tile_mode = META_TILE_NONE;