aboutsummaryrefslogtreecommitdiff
path: root/sway
diff options
context:
space:
mode:
Diffstat (limited to 'sway')
-rw-r--r--sway/commands/focus.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/sway/commands/focus.c b/sway/commands/focus.c
index 30cfa1c5..e48e48aa 100644
--- a/sway/commands/focus.c
+++ b/sway/commands/focus.c
@@ -54,7 +54,7 @@ static struct sway_node *get_node_in_output_direction(
} else {
container = seat_get_focus_inactive_tiling(seat, ws);
}
- return &container->node;
+ break;
case MOVE_RIGHT:
if (ws->layout == L_HORIZ || ws->layout == L_TABBED) {
// get most left child of new output
@@ -62,7 +62,7 @@ static struct sway_node *get_node_in_output_direction(
} else {
container = seat_get_focus_inactive_tiling(seat, ws);
}
- return &container->node;
+ break;
case MOVE_UP:
if (ws->layout == L_VERT || ws->layout == L_STACKED) {
// get most bottom child of new output
@@ -70,7 +70,7 @@ static struct sway_node *get_node_in_output_direction(
} else {
container = seat_get_focus_inactive_tiling(seat, ws);
}
- return &container->node;
+ break;
case MOVE_DOWN: {
if (ws->layout == L_VERT || ws->layout == L_STACKED) {
// get most top child of new output
@@ -78,13 +78,18 @@ static struct sway_node *get_node_in_output_direction(
} else {
container = seat_get_focus_inactive_tiling(seat, ws);
}
- return &container->node;
+ break;
}
default:
break;
}
}
+ if (container) {
+ container = seat_get_focus_inactive_view(seat, &container->node);
+ return &container->node;
+ }
+
return &ws->node;
}