diff options
author | Thomas Hebb <tommyhebb@gmail.com> | 2022-02-21 23:07:09 -0800 |
---|---|---|
committer | Simon Ser <contact@emersion.fr> | 2022-02-24 12:12:12 +0100 |
commit | 0ee54a524329ab8d3db7dbe8286dc97b0bf57bed (patch) | |
tree | acab9a691395d9e8dd5cb965e38c0b7bbd522c62 | |
parent | Remove some erroneous apostrophes in comments (diff) | |
download | sway-0ee54a524329ab8d3db7dbe8286dc97b0bf57bed.tar.gz sway-0ee54a524329ab8d3db7dbe8286dc97b0bf57bed.tar.zst sway-0ee54a524329ab8d3db7dbe8286dc97b0bf57bed.zip |
Don't enter seatop_move_floating when fullscreen
Currently, a floating window that's been fullscreened can send us
xdg_toplevel::move, and we'll enter seatop_move_floating, which lets us
drag the surface around while it's fullscreen. We don't want
this--fullscreen surfaces should always be aligned to the screen--so add
the same check that seatop_default already does when entering this mode.
Tested with Weston's weston-fullscreen demo, which sends a move request
if you click anywhere on its surface.
-rw-r--r-- | sway/desktop/xdg_shell.c | 3 | ||||
-rw-r--r-- | sway/desktop/xwayland.c | 3 |
2 files changed, 4 insertions, 2 deletions
diff --git a/sway/desktop/xdg_shell.c b/sway/desktop/xdg_shell.c index 6af67207..51168f4c 100644 --- a/sway/desktop/xdg_shell.c +++ b/sway/desktop/xdg_shell.c | |||
@@ -360,7 +360,8 @@ static void handle_request_move(struct wl_listener *listener, void *data) { | |||
360 | struct sway_xdg_shell_view *xdg_shell_view = | 360 | struct sway_xdg_shell_view *xdg_shell_view = |
361 | wl_container_of(listener, xdg_shell_view, request_move); | 361 | wl_container_of(listener, xdg_shell_view, request_move); |
362 | struct sway_view *view = &xdg_shell_view->view; | 362 | struct sway_view *view = &xdg_shell_view->view; |
363 | if (!container_is_floating(view->container)) { | 363 | if (!container_is_floating(view->container) || |
364 | view->container->pending.fullscreen_mode) { | ||
364 | return; | 365 | return; |
365 | } | 366 | } |
366 | struct wlr_xdg_toplevel_move_event *e = data; | 367 | struct wlr_xdg_toplevel_move_event *e = data; |
diff --git a/sway/desktop/xwayland.c b/sway/desktop/xwayland.c index 2f11b5fc..483398e9 100644 --- a/sway/desktop/xwayland.c +++ b/sway/desktop/xwayland.c | |||
@@ -594,7 +594,8 @@ static void handle_request_move(struct wl_listener *listener, void *data) { | |||
594 | if (!xsurface->mapped) { | 594 | if (!xsurface->mapped) { |
595 | return; | 595 | return; |
596 | } | 596 | } |
597 | if (!container_is_floating(view->container)) { | 597 | if (!container_is_floating(view->container) || |
598 | view->container->pending.fullscreen_mode) { | ||
598 | return; | 599 | return; |
599 | } | 600 | } |
600 | struct sway_seat *seat = input_manager_current_seat(); | 601 | struct sway_seat *seat = input_manager_current_seat(); |