aboutsummaryrefslogtreecommitdiffstats
path: root/sway/layout.c
diff options
context:
space:
mode:
Diffstat (limited to 'sway/layout.c')
-rw-r--r--sway/layout.c6
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) {