remove a function that is no longer used. and backwards boolean algebra was causing us to not ignore the right enter events
This commit is contained in:
parent
7ee54ff106
commit
9752670920
5 changed files with 13 additions and 27 deletions
|
@ -47,7 +47,7 @@ static void client_action_end(union ActionData *data)
|
||||||
if (config_focus_follow)
|
if (config_focus_follow)
|
||||||
if (data->any.context != OB_FRAME_CONTEXT_CLIENT) {
|
if (data->any.context != OB_FRAME_CONTEXT_CLIENT) {
|
||||||
if (!data->any.button && data->any.c) {
|
if (!data->any.button && data->any.c) {
|
||||||
event_ignore_enters_leaving_window(data->any.c);
|
event_ignore_all_queued_enters();
|
||||||
} else {
|
} else {
|
||||||
ObClient *c;
|
ObClient *c;
|
||||||
|
|
||||||
|
|
|
@ -565,7 +565,7 @@ void client_unmanage(ObClient *self)
|
||||||
|
|
||||||
/* ignore enter events from the unmap so it doesnt mess with the
|
/* ignore enter events from the unmap so it doesnt mess with the
|
||||||
focus */
|
focus */
|
||||||
event_ignore_enters_leaving_window(self);
|
event_ignore_all_queued_enters();
|
||||||
|
|
||||||
mouse_grab_for_client(self, FALSE);
|
mouse_grab_for_client(self, FALSE);
|
||||||
|
|
||||||
|
|
|
@ -154,8 +154,6 @@ static void client_menu_execute(ObMenuEntry *e, ObMenuFrame *f,
|
||||||
g_assert_not_reached();
|
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();
|
event_ignore_all_queued_enters();
|
||||||
|
|
||||||
/* update the menu cuz stuff can have changed */
|
/* update the menu cuz stuff can have changed */
|
||||||
|
@ -217,8 +215,6 @@ static void layer_menu_execute(ObMenuEntry *e, ObMenuFrame *f,
|
||||||
g_assert_not_reached();
|
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();
|
event_ignore_all_queued_enters();
|
||||||
|
|
||||||
/* update the menu cuz stuff can have changed */
|
/* update the menu cuz stuff can have changed */
|
||||||
|
|
|
@ -884,7 +884,7 @@ static void event_handle_client(ObClient *client, XEvent *e)
|
||||||
corresponding enter events. Pretend like the animating window
|
corresponding enter events. Pretend like the animating window
|
||||||
doesn't even exist..! */
|
doesn't even exist..! */
|
||||||
if (frame_iconify_animating(client->frame))
|
if (frame_iconify_animating(client->frame))
|
||||||
event_ignore_enters_leaving_window(client);
|
event_ignore_all_queued_enters();
|
||||||
|
|
||||||
ob_debug_type(OB_DEBUG_FOCUS,
|
ob_debug_type(OB_DEBUG_FOCUS,
|
||||||
"%sNotify mode %d detail %d on %lx\n",
|
"%sNotify mode %d detail %d on %lx\n",
|
||||||
|
@ -1079,7 +1079,7 @@ static void event_handle_client(ObClient *client, XEvent *e)
|
||||||
client_configure(client, x, y, w, h, FALSE, TRUE);
|
client_configure(client, x, y, w, h, FALSE, TRUE);
|
||||||
|
|
||||||
/* ignore enter events caused by these like ob actions do */
|
/* ignore enter events caused by these like ob actions do */
|
||||||
event_ignore_enters_leaving_window(client);
|
event_ignore_all_queued_enters();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1175,7 +1175,7 @@ static void event_handle_client(ObClient *client, XEvent *e)
|
||||||
e->xclient.data.l[1], e->xclient.data.l[2]);
|
e->xclient.data.l[1], e->xclient.data.l[2]);
|
||||||
|
|
||||||
/* ignore enter events caused by these like ob actions do */
|
/* 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) {
|
} else if (msgtype == prop_atoms.net_close_window) {
|
||||||
ob_debug("net_close_window for 0x%lx\n", client->window);
|
ob_debug("net_close_window for 0x%lx\n", client->window);
|
||||||
client_close(client);
|
client_close(client);
|
||||||
|
@ -1263,7 +1263,7 @@ static void event_handle_client(ObClient *client, XEvent *e)
|
||||||
client_configure(client, x, y, w, h, FALSE, TRUE);
|
client_configure(client, x, y, w, h, FALSE, TRUE);
|
||||||
|
|
||||||
/* ignore enter events caused by these like ob actions do */
|
/* 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) {
|
} else if (msgtype == prop_atoms.net_restack_window) {
|
||||||
if (e->xclient.data.l[0] != 2) {
|
if (e->xclient.data.l[0] != 2) {
|
||||||
ob_debug_type(OB_DEBUG_APP_BUGS,
|
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 &&
|
if (e->type == EnterNotify &&
|
||||||
/* these types aren't used for focusing */
|
/* these types aren't used for focusing */
|
||||||
(e->xcrossing.mode == NotifyGrab ||
|
!(e->xcrossing.mode == NotifyGrab ||
|
||||||
e->xcrossing.mode == NotifyUngrab ||
|
e->xcrossing.mode == NotifyUngrab ||
|
||||||
/*ignore enters when we're already in the window */
|
e->xcrossing.detail == NotifyInferior))
|
||||||
e->xcrossing.detail == NotifyInferior))
|
|
||||||
{
|
{
|
||||||
ObWindow *win;
|
ObWindow *win;
|
||||||
|
|
||||||
|
@ -1733,19 +1732,11 @@ static Bool event_look_for_enters(Display *d, XEvent *e, XPointer arg)
|
||||||
}
|
}
|
||||||
|
|
||||||
void event_ignore_all_queued_enters()
|
void event_ignore_all_queued_enters()
|
||||||
{
|
|
||||||
event_ignore_enters_leaving_window(NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
void event_ignore_enters_leaving_window(ObClient *c)
|
|
||||||
{
|
{
|
||||||
XEvent e;
|
XEvent e;
|
||||||
|
|
||||||
XSync(ob_display, FALSE);
|
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 */
|
/* count the events without disrupting them */
|
||||||
ignore_enter_focus = 0;
|
ignore_enter_focus = 0;
|
||||||
XCheckIfEvent(ob_display, &e, event_look_for_enters, NULL);
|
XCheckIfEvent(ob_display, &e, event_look_for_enters, NULL);
|
||||||
|
@ -1753,7 +1744,10 @@ void event_ignore_enters_leaving_window(ObClient *c)
|
||||||
|
|
||||||
static gboolean is_enter_focus_event_ignored(XEvent *e)
|
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",
|
ob_debug_type(OB_DEBUG_FOCUS, "# enters ignored: %d\n",
|
||||||
ignore_enter_focus);
|
ignore_enter_focus);
|
||||||
|
|
|
@ -39,10 +39,6 @@ void event_shutdown(gboolean reconfig);
|
||||||
follows mouse */
|
follows mouse */
|
||||||
void event_enter_client(struct _ObClient *client);
|
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
|
/*! Make mouse focus not move at all from the stuff that has happened up
|
||||||
till now. */
|
till now. */
|
||||||
void event_ignore_all_queued_enters();
|
void event_ignore_all_queued_enters();
|
||||||
|
|
Loading…
Reference in a new issue