From 2f89b7084de2ba97bf9369376ab341f715b47c1a Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Sun, 13 Dec 2015 08:18:12 -0500 Subject: Correctly handle moving between fullscreen views If focus would move in an output with a fullscreen view, it always leaves the output. If focus would enter an output with a fullscreen view, it always focuses the fullscreened view. --- sway/layout.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/sway/layout.c b/sway/layout.c index e89402ed..333c1928 100644 --- a/sway/layout.c +++ b/sway/layout.c @@ -579,6 +579,19 @@ swayc_t *get_swayc_in_direction_under(swayc_t *container, enum movement_directio // output might border to multiple outputs). struct wlc_point abs_pos; get_absolute_center_position(container, &abs_pos); + + if (container->type == C_VIEW && swayc_is_fullscreen(container)) { + sway_log(L_DEBUG, "Moving from fullscreen view, skipping to output"); + container = swayc_parent_by_type(container, C_OUTPUT); + get_absolute_center_position(container, &abs_pos); + return swayc_adjacent_output(container, dir, &abs_pos, true); + } + + if (container->type == C_WORKSPACE && container->fullscreen) { + sway_log(L_DEBUG, "Moving to fullscreen view"); + return container->fullscreen; + } + while (true) { // Test if we can even make a difference here bool can_move = false; -- cgit v1.2.3-54-g00ecf