mirror of
https://github.com/swaywm/sway.git
synced 2025-11-08 13:29:50 -05:00
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.
This commit is contained in:
parent
32193c7e4d
commit
3a888163a0
3 changed files with 81 additions and 55 deletions
|
|
@ -46,14 +46,13 @@ static struct cmd_results *focus_mode(struct sway_container *con,
|
|||
|
||||
struct sway_container *new_focus = NULL;
|
||||
if (floating) {
|
||||
new_focus = seat_get_focus_inactive(seat, ws->sway_workspace->floating);
|
||||
new_focus = seat_get_focus_inactive_floating(seat, ws);
|
||||
} else {
|
||||
new_focus = seat_get_focus_inactive_tiling(seat, ws);
|
||||
}
|
||||
if (!new_focus) {
|
||||
new_focus = ws;
|
||||
if (new_focus) {
|
||||
seat_set_focus(seat, new_focus);
|
||||
}
|
||||
seat_set_focus(seat, new_focus);
|
||||
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue