]> git.sur5r.net Git - i3/i3/commitdiff
Bugfix: Fix warping of cursor when only switching screen, not workspace
authorMichael Stapelberg <michael+x200@stapelberg.de>
Sat, 11 Apr 2009 18:55:16 +0000 (20:55 +0200)
committerMichael Stapelberg <michael+x200@stapelberg.de>
Sat, 11 Apr 2009 18:55:16 +0000 (20:55 +0200)
src/commands.c

index bd3e9f1c16aefdd036497958be717a97a7233ce2..728c6d7c2713902f6605ba353cac52bbd342f4c1 100644 (file)
@@ -501,8 +501,13 @@ void show_workspace(xcb_connection_t *conn, int workspace) {
 
         /* Check if we need to change something or if we’re already there */
         if (c_ws->screen->current_workspace == (workspace-1)) {
-                if (CUR_CELL->currently_focused != NULL)
+                if (CUR_CELL->currently_focused != NULL) {
                         set_focus(conn, CUR_CELL->currently_focused, true);
+                        if (need_warp) {
+                                warp_pointer_into(conn, CUR_CELL->currently_focused);
+                                xcb_flush(conn);
+                        }
+                }
                 return;
         }
 
@@ -555,8 +560,10 @@ void show_workspace(xcb_connection_t *conn, int workspace) {
         /* Restore focus on the new workspace */
         if (CUR_CELL->currently_focused != NULL) {
                 set_focus(conn, CUR_CELL->currently_focused, true);
-                if (need_warp)
+                if (need_warp) {
                         warp_pointer_into(conn, CUR_CELL->currently_focused);
+                        xcb_flush(conn);
+                }
         } else xcb_set_input_focus(conn, XCB_INPUT_FOCUS_POINTER_ROOT, root, XCB_CURRENT_TIME);
 
         //xcb_ungrab_server(conn);