aboutsummaryrefslogtreecommitdiffstats
path: root/sway/commands/focus.c
diff options
context:
space:
mode:
authorLibravatar Ryan Dwyer <ryandwyer1@gmail.com>2018-08-17 17:32:53 +1000
committerLibravatar Ryan Dwyer <ryandwyer1@gmail.com>2018-08-17 17:32:53 +1000
commit3a888163a03e8fb6fbe91bfe8e2fe4f3d2f03cec (patch)
tree56dff4af22bf816ab5ec024f694d41ef3275d48e /sway/commands/focus.c
parentMerge pull request #2465 from DonnieWest/master (diff)
downloadsway-3a888163a03e8fb6fbe91bfe8e2fe4f3d2f03cec.tar.gz
sway-3a888163a03e8fb6fbe91bfe8e2fe4f3d2f03cec.tar.zst
sway-3a888163a03e8fb6fbe91bfe8e2fe4f3d2f03cec.zip
Refactor seat_get_focus functions
Fixes #2467. This commit introduces seat_get_focus_inactive_floating to supplement seat_get_focus_inactive_tiling, and uses it during `focus mode_toggle` which fixes a focus bug. This also refactors the seat_get_focus_inactive functions so that they do their selection logic themselves rather than offloading it to seat_get_focus_by_type which was getting bloated. seat_get_focus_by_type is now removed. Lastly, this commit changes seat_get_focus to just return the first container in the focus stack rather than looping and calling seat_get_focus_by_type.
Diffstat (limited to 'sway/commands/focus.c')
-rw-r--r--sway/commands/focus.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/sway/commands/focus.c b/sway/commands/focus.c
index 76d3f1dc..135a2908 100644
--- a/sway/commands/focus.c
+++ b/sway/commands/focus.c
@@ -46,14 +46,13 @@ static struct cmd_results *focus_mode(struct sway_container *con,
46 46
47 struct sway_container *new_focus = NULL; 47 struct sway_container *new_focus = NULL;
48 if (floating) { 48 if (floating) {
49 new_focus = seat_get_focus_inactive(seat, ws->sway_workspace->floating); 49 new_focus = seat_get_focus_inactive_floating(seat, ws);
50 } else { 50 } else {
51 new_focus = seat_get_focus_inactive_tiling(seat, ws); 51 new_focus = seat_get_focus_inactive_tiling(seat, ws);
52 } 52 }
53 if (!new_focus) { 53 if (new_focus) {
54 new_focus = ws; 54 seat_set_focus(seat, new_focus);
55 } 55 }
56 seat_set_focus(seat, new_focus);
57 return cmd_results_new(CMD_SUCCESS, NULL, NULL); 56 return cmd_results_new(CMD_SUCCESS, NULL, NULL);
58} 57}
59 58