diff options
author | Brian Ashworth <bosrsf04@gmail.com> | 2019-03-14 11:43:39 -0400 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2019-03-14 10:03:45 -0600 |
commit | d8f74e4706104ac751706d5071838f97e3956a5e (patch) | |
tree | e502fbd08807d6a32b782fe48345d2cd39be56a6 /sway/input | |
parent | d64e8ba9469f4fa0ff693a22c88c1afa687c4c6c (diff) | |
download | sway-d8f74e4706104ac751706d5071838f97e3956a5e.tar.xz |
Set prev_workspace_name based off of focus
This moves setting `seat->prev_workspace_name` from `workspace_switch`
to `set_workspace`. `workspace_switch` is only called when using a
`workspace` command to change the workspace so any workspace change
based on criteria was not altering `seat->prev_workspace_name`. By
moving it to `set_workspace`, which is called by `seat_set_focus`, it
will change any time focus changes to a node on a different workspace
Diffstat (limited to 'sway/input')
-rw-r--r-- | sway/input/seat.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/sway/input/seat.c b/sway/input/seat.c index be523539..e56a6510 100644 --- a/sway/input/seat.c +++ b/sway/input/seat.c @@ -763,6 +763,18 @@ static void set_workspace(struct sway_seat *seat, if (seat->workspace == new_ws) { return; } + + if (seat->workspace) { + free(seat->prev_workspace_name); + seat->prev_workspace_name = malloc(strlen(seat->workspace->name) + 1); + if (!seat->prev_workspace_name) { + sway_log(SWAY_ERROR, "Unable to allocate previous workspace name"); + seat->prev_workspace_name = NULL; + } else { + strcpy(seat->prev_workspace_name, seat->workspace->name); + } + } + ipc_event_workspace(seat->workspace, new_ws, "focus"); seat->workspace = new_ws; } |