]> git.sur5r.net Git - i3/i3/commitdiff
Revert "Bugfix: Ignore enter_notify when warping pointer (makes "goto" work correctly)"
authorMichael Stapelberg <michael@stapelberg.de>
Sat, 27 Mar 2010 16:51:28 +0000 (17:51 +0100)
committerMichael Stapelberg <michael@stapelberg.de>
Sat, 27 Mar 2010 16:52:15 +0000 (17:52 +0100)
This reverts commit 7d6e80b5ef8656bf35a8dc7471d36ad64ef279fb.
Instead fix it by setting focus correctly before causig the warp.

include/handlers.h
src/client.c
src/commands.c
src/handlers.c
src/workspace.c

index 7d0662e16a671152869c5f7979bf71f8f6ce90c8..c7cbb3226a44b960c0caf5e9022db34dfc7df99b 100644 (file)
 
 #include <xcb/randr.h>
 
-/**
- * Adds the sequence number of an event to the ignored events.
- * Useful to ignore for example the enter notify caused by a pointer warp of
- * i3.
- *
- */
-void add_ignore_event(const int sequence);
-
 /**
  * There was a key press. We compare this key code with our bindings table and
  * pass the bound action to parse_command().
index ba3babe073592d5eed6e68f61eb13893194b5c0a..9c136ca6bc4ba68dfb98095e2f0a766bad960d8c 100644 (file)
@@ -29,7 +29,6 @@
 #include "workspace.h"
 #include "config.h"
 #include "log.h"
-#include "handlers.h"
 
 /*
  * Removes the given client from the container, either because it will be inserted into another
@@ -63,12 +62,7 @@ void client_remove_from_container(xcb_connection_t *conn, Client *client, Contai
 void client_warp_pointer_into(xcb_connection_t *conn, Client *client) {
         int mid_x = client->rect.width / 2,
             mid_y = client->rect.height / 2;
-        xcb_void_cookie_t cookie;
-        cookie = xcb_warp_pointer(conn, XCB_NONE, client->child, 0, 0, 0, 0, mid_x, mid_y);
-        /* We need to add this event twice because we get one enter_notify for
-         * the child and one for the frame */
-        add_ignore_event(cookie.sequence);
-        add_ignore_event(cookie.sequence);
+        xcb_warp_pointer(conn, XCB_NONE, client->child, 0, 0, 0, 0, mid_x, mid_y);
 }
 
 /*
index c0cb8782a24fa3590274e2a17af6534d87911810..b2649beeec1f7b22d11afa771f3ea600c2d06370 100644 (file)
@@ -73,8 +73,8 @@ static void jump_to_mark(xcb_connection_t *conn, const char *mark) {
                         if (current->mark == NULL || strcmp(current->mark, mark) != 0)
                                 continue;
 
-                        workspace_show(conn, current->workspace->num + 1);
                         set_focus(conn, current, true);
+                        workspace_show(conn, current->workspace->num + 1);
                         return;
                 }
 
index 5eddf244029dac976bb50030e7330b50b4caff51..624c34305d5bd78caa9bcdbe89ab6291ad0e5095 100644 (file)
    changing workspaces */
 static SLIST_HEAD(ignore_head, Ignore_Event) ignore_events;
 
-/*
- * Adds the sequence number of an event to the ignored events.
- * Useful to ignore for example the enter notify caused by a pointer warp of
- * i3.
- *
- */
-void add_ignore_event(const int sequence) {
+static void add_ignore_event(const int sequence) {
         struct Ignore_Event *event = smalloc(sizeof(struct Ignore_Event));
 
         event->sequence = sequence;
index 2798687dad641094e769977076d8e8719d6ff1ec..c950df8f92e27eda7e9ea56140889a6a855f10c3 100644 (file)
@@ -29,7 +29,6 @@
 #include "log.h"
 #include "ewmh.h"
 #include "ipc.h"
-#include "handlers.h"
 
 /*
  * Returns a pointer to the workspace with the given number (starting at 0),
@@ -140,10 +139,8 @@ void workspace_show(xcb_connection_t *conn, int workspace) {
                         need_warp = true;
                 else {
                         Rect *dims = &(c_ws->output->rect);
-                        xcb_void_cookie_t cookie;
-                        cookie = xcb_warp_pointer(conn, XCB_NONE, root, 0, 0, 0, 0,
+                        xcb_warp_pointer(conn, XCB_NONE, root, 0, 0, 0, 0,
                                          dims->x + (dims->width / 2), dims->y + (dims->height / 2));
-                        add_ignore_event(cookie.sequence);
                 }
 
                 /* Re-decorate the old client, it’s not focused anymore */