diff options
Diffstat (limited to 'sway/layout.c')
-rw-r--r-- | sway/layout.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sway/layout.c b/sway/layout.c index fe7d820a..741addf1 100644 --- a/sway/layout.c +++ b/sway/layout.c | |||
@@ -533,13 +533,17 @@ swayc_t *get_swayc_in_direction_under(swayc_t *container, enum movement_directio | |||
533 | return parent; | 533 | return parent; |
534 | } | 534 | } |
535 | } | 535 | } |
536 | // If moving to an adjacent output we need a starting position (since this | ||
537 | // output might border to multiple outputs). | ||
538 | struct wlc_point abs_pos; | ||
539 | get_absolute_center_position(container, &abs_pos); | ||
536 | while (true) { | 540 | while (true) { |
537 | // Test if we can even make a difference here | 541 | // Test if we can even make a difference here |
538 | bool can_move = false; | 542 | bool can_move = false; |
539 | int diff = 0; | 543 | int diff = 0; |
540 | if (parent->type == C_ROOT) { | 544 | if (parent->type == C_ROOT) { |
541 | sway_log(L_DEBUG, "Moving between outputs"); | 545 | sway_log(L_DEBUG, "Moving between outputs"); |
542 | return swayc_adjacent_output(container, dir); | 546 | return swayc_adjacent_output(container, dir, &abs_pos, true); |
543 | } else { | 547 | } else { |
544 | if (dir == MOVE_LEFT || dir == MOVE_RIGHT) { | 548 | if (dir == MOVE_LEFT || dir == MOVE_RIGHT) { |
545 | if (parent->layout == L_HORIZ) { | 549 | if (parent->layout == L_HORIZ) { |