diff options
author | Ryan Dwyer <ryandwyer1@gmail.com> | 2018-08-17 17:32:53 +1000 |
---|---|---|
committer | Ryan Dwyer <ryandwyer1@gmail.com> | 2018-08-17 17:32:53 +1000 |
commit | 3a888163a03e8fb6fbe91bfe8e2fe4f3d2f03cec (patch) | |
tree | 56dff4af22bf816ab5ec024f694d41ef3275d48e /sway/commands/focus.c | |
parent | Merge pull request #2465 from DonnieWest/master (diff) | |
download | sway-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.c | 7 |
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 | ||