diff --git a/src/core/window-private.h b/src/core/window-private.h index 6a27949c8..0c71152a4 100644 --- a/src/core/window-private.h +++ b/src/core/window-private.h @@ -81,9 +81,10 @@ typedef enum META_MOVE_RESIZE_WAYLAND_RESIZE = 1 << 4, META_MOVE_RESIZE_STATE_CHANGED = 1 << 5, META_MOVE_RESIZE_UNMAXIMIZE = 1 << 6, - META_MOVE_RESIZE_FORCE_MOVE = 1 << 7, - META_MOVE_RESIZE_WAYLAND_STATE_CHANGED = 1 << 8, - META_MOVE_RESIZE_FORCE_UPDATE_MONITOR = 1 << 9, + META_MOVE_RESIZE_UNFULLSCREEN = 1 << 7, + META_MOVE_RESIZE_FORCE_MOVE = 1 << 8, + META_MOVE_RESIZE_WAYLAND_STATE_CHANGED = 1 << 9, + META_MOVE_RESIZE_FORCE_UPDATE_MONITOR = 1 << 10, } MetaMoveResizeFlags; typedef enum diff --git a/src/core/window.c b/src/core/window.c index c1179c6ad..1b36ff7b9 100644 --- a/src/core/window.c +++ b/src/core/window.c @@ -3561,7 +3561,8 @@ meta_window_unmake_fullscreen (MetaWindow *window) meta_window_move_resize_internal (window, (META_MOVE_RESIZE_MOVE_ACTION | META_MOVE_RESIZE_RESIZE_ACTION | - META_MOVE_RESIZE_STATE_CHANGED), + META_MOVE_RESIZE_STATE_CHANGED | + META_MOVE_RESIZE_UNFULLSCREEN), NorthWestGravity, target_rect); diff --git a/src/wayland/meta-window-wayland.c b/src/wayland/meta-window-wayland.c index db6476f19..d72b3bbc1 100644 --- a/src/wayland/meta-window-wayland.c +++ b/src/wayland/meta-window-wayland.c @@ -224,6 +224,13 @@ meta_window_wayland_move_resize_internal (MetaWindow *window, configured_width = 0; configured_height = 0; } + else if (flags & META_MOVE_RESIZE_UNFULLSCREEN && + !meta_window_get_maximized (window) && + meta_window_get_tile_mode (window) == META_TILE_NONE) + { + configured_width = 0; + configured_height = 0; + } else { configured_width = constrained_rect.width / geometry_scale;