all repos — openbox @ 9752670920352bdd721d9958370edc569481d9e6

openbox fork - make it a bit more like ryudo

remove a function that is no longer used. and backwards boolean algebra was causing us to not ignore the right enter events
Dana Jansens danakj@orodu.net
commit

9752670920352bdd721d9958370edc569481d9e6

parent

7ee54ff106ef190537d194cac331b70d8cc1bc80

5 files changed, 13 insertions(+), 27 deletions(-)

jump to
M openbox/action.copenbox/action.c

@@ -47,7 +47,7 @@ {

if (config_focus_follow) if (data->any.context != OB_FRAME_CONTEXT_CLIENT) { if (!data->any.button && data->any.c) { - event_ignore_enters_leaving_window(data->any.c); + event_ignore_all_queued_enters(); } else { ObClient *c;
M openbox/client.copenbox/client.c

@@ -565,7 +565,7 @@ XFlush(ob_display);

/* ignore enter events from the unmap so it doesnt mess with the focus */ - event_ignore_enters_leaving_window(self); + event_ignore_all_queued_enters(); mouse_grab_for_client(self, FALSE);
M openbox/client_menu.copenbox/client_menu.c

@@ -154,8 +154,6 @@ default:

g_assert_not_reached(); } - /* we have to ignore all queued enters because the menu has a grab, and the - so the cursor isnt considered inside the client's window */ event_ignore_all_queued_enters(); /* update the menu cuz stuff can have changed */

@@ -217,8 +215,6 @@ default:

g_assert_not_reached(); } - /* we have to ignore all queued enters because the menu has a grab, and the - so the cursor isnt considered inside the client's window */ event_ignore_all_queued_enters(); /* update the menu cuz stuff can have changed */
M openbox/event.copenbox/event.c

@@ -884,7 +884,7 @@ /* When the mouse leaves an animating window, don't use the

corresponding enter events. Pretend like the animating window doesn't even exist..! */ if (frame_iconify_animating(client->frame)) - event_ignore_enters_leaving_window(client); + event_ignore_all_queued_enters(); ob_debug_type(OB_DEBUG_FOCUS, "%sNotify mode %d detail %d on %lx\n",

@@ -1079,7 +1079,7 @@ client_find_onscreen(client, &x, &y, w, h, FALSE);

client_configure(client, x, y, w, h, FALSE, TRUE); /* ignore enter events caused by these like ob actions do */ - event_ignore_enters_leaving_window(client); + event_ignore_all_queued_enters(); } break; }

@@ -1175,7 +1175,7 @@ client_set_state(client, e->xclient.data.l[0],

e->xclient.data.l[1], e->xclient.data.l[2]); /* ignore enter events caused by these like ob actions do */ - event_ignore_enters_leaving_window(client); + event_ignore_all_queued_enters(); } else if (msgtype == prop_atoms.net_close_window) { ob_debug("net_close_window for 0x%lx\n", client->window); client_close(client);

@@ -1263,7 +1263,7 @@

client_configure(client, x, y, w, h, FALSE, TRUE); /* ignore enter events caused by these like ob actions do */ - event_ignore_enters_leaving_window(client); + event_ignore_all_queued_enters(); } else if (msgtype == prop_atoms.net_restack_window) { if (e->xclient.data.l[0] != 2) { ob_debug_type(OB_DEBUG_APP_BUGS,

@@ -1716,10 +1716,9 @@ static Bool event_look_for_enters(Display *d, XEvent *e, XPointer arg)

{ if (e->type == EnterNotify && /* these types aren't used for focusing */ - (e->xcrossing.mode == NotifyGrab || - e->xcrossing.mode == NotifyUngrab || - /*ignore enters when we're already in the window */ - e->xcrossing.detail == NotifyInferior)) + !(e->xcrossing.mode == NotifyGrab || + e->xcrossing.mode == NotifyUngrab || + e->xcrossing.detail == NotifyInferior)) { ObWindow *win;

@@ -1734,17 +1733,9 @@ }

void event_ignore_all_queued_enters() { - event_ignore_enters_leaving_window(NULL); -} - -void event_ignore_enters_leaving_window(ObClient *c) -{ XEvent e; XSync(ob_display, FALSE); - - ob_debug_type(OB_DEBUG_FOCUS, "want to ignore enters leaving window " - "%s\n", c?c->title:"(all)"); /* count the events without disrupting them */ ignore_enter_focus = 0;

@@ -1753,7 +1744,10 @@ }

static gboolean is_enter_focus_event_ignored(XEvent *e) { - g_assert(e->type == EnterNotify); + g_assert(e->type == EnterNotify && + !(e->xcrossing.mode == NotifyGrab || + e->xcrossing.mode == NotifyUngrab || + e->xcrossing.detail == NotifyInferior)); ob_debug_type(OB_DEBUG_FOCUS, "# enters ignored: %d\n", ignore_enter_focus);
M openbox/event.hopenbox/event.h

@@ -39,10 +39,6 @@ /*! Make as if the mouse just entered the client, use only when using focus

follows mouse */ void event_enter_client(struct _ObClient *client); -/*! Make mouse focus not move if the mouse leaves this client from what - has just transpired. */ -void event_ignore_enters_leaving_window(struct _ObClient *c); - /*! Make mouse focus not move at all from the stuff that has happened up till now. */ void event_ignore_all_queued_enters();