summaryrefslogtreecommitdiffstats
path: root/sway/workspace.c
diff options
context:
space:
mode:
authorLibravatar S. Christoffer Eliesen <christoffer@eliesen.no>2015-10-23 14:32:17 +0200
committerLibravatar S. Christoffer Eliesen <christoffer@eliesen.no>2015-10-23 16:35:48 +0200
commitc1479701dea79aebd2b5fdd83a9b28435f6647fe (patch)
tree857071bb0f3fe2795eacac82071123bfda1a750b /sway/workspace.c
parenthandlers: Don't switch output when mouse button is pressed. (diff)
downloadsway-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.c9
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
201void workspace_switch(swayc_t *workspace) { 201bool 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}