[mutter] window/wayland: Don't always use constrained size when unfullscreening
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] window/wayland: Don't always use constrained size when unfullscreening
- Date: Thu, 13 Jun 2019 16:48:30 +0000 (UTC)
commit 59bf1f48380feb46e42863d4b4fa121261f09146
Author: Jonas Ã…dahl <jadahl gmail com>
Date: Thu Jun 13 10:35:35 2019 +0200
window/wayland: Don't always use constrained size when unfullscreening
When we're unfullscreening, we might be returning to a window state that
has its size either managed by constraints (tiled, maximized), or not
(floating). Lets just pass the configure size 0x0 when we're not using
constrained sizes (i.e. the window going from being fullscreen to not
maximized) and let the application decide how to size itself.
Fixes: https://gitlab.gnome.org/GNOME/mutter/issues/638
https://gitlab.gnome.org/GNOME/mutter/merge_requests/621
src/core/window-private.h | 7 ++++---
src/core/window.c | 3 ++-
src/wayland/meta-window-wayland.c | 7 +++++++
3 files changed, 13 insertions(+), 4 deletions(-)
---
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;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]