diff options
author | 2015-10-23 14:32:17 +0200 | |
---|---|---|
committer | 2015-10-23 16:35:48 +0200 | |
commit | c1479701dea79aebd2b5fdd83a9b28435f6647fe (patch) | |
tree | 857071bb0f3fe2795eacac82071123bfda1a750b /sway/workspace.c | |
parent | handlers: Don't switch output when mouse button is pressed. (diff) | |
download | sway-c1479701dea79aebd2b5fdd83a9b28435f6647fe.tar.gz sway-c1479701dea79aebd2b5fdd83a9b28435f6647fe.tar.zst sway-c1479701dea79aebd2b5fdd83a9b28435f6647fe.zip |
seamless_mouse: Move pointer only if successfully changed workspace.
If e.g. a window has a popup open then that will lock the current focus,
making a workspace switch denied.
So don't move the mouse pointer in such cases.
Diffstat (limited to 'sway/workspace.c')
-rw-r--r-- | sway/workspace.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/sway/workspace.c b/sway/workspace.c index c169c1cb..b7e9760b 100644 --- a/sway/workspace.c +++ b/sway/workspace.c | |||
@@ -198,9 +198,9 @@ swayc_t *workspace_prev() { | |||
198 | return workspace_prev_next_impl(swayc_active_workspace(), false); | 198 | return workspace_prev_next_impl(swayc_active_workspace(), false); |
199 | } | 199 | } |
200 | 200 | ||
201 | void workspace_switch(swayc_t *workspace) { | 201 | bool workspace_switch(swayc_t *workspace) { |
202 | if (!workspace) { | 202 | if (!workspace) { |
203 | return; | 203 | return false; |
204 | } | 204 | } |
205 | swayc_t *active_ws = swayc_active_workspace(); | 205 | swayc_t *active_ws = swayc_active_workspace(); |
206 | if (config->auto_back_and_forth && active_ws == workspace && prev_workspace_name) { | 206 | if (config->auto_back_and_forth && active_ws == workspace && prev_workspace_name) { |
@@ -217,6 +217,9 @@ void workspace_switch(swayc_t *workspace) { | |||
217 | } | 217 | } |
218 | 218 | ||
219 | sway_log(L_DEBUG, "Switching to workspace %p:%s", workspace, workspace->name); | 219 | sway_log(L_DEBUG, "Switching to workspace %p:%s", workspace, workspace->name); |
220 | set_focused_container(get_focused_view(workspace)); | 220 | if (!set_focused_container(get_focused_view(workspace))) { |
221 | return false; | ||
222 | } | ||
221 | arrange_windows(workspace, -1, -1); | 223 | arrange_windows(workspace, -1, -1); |
224 | return true; | ||
222 | } | 225 | } |