X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fevent.c;h=97b0da84e69309ebe1ca2921a4888e844760b755;hb=4dec70d627dbf133e3042c09032906ba65ad17b0;hp=a75d7711032d6342234c7c02a59e917ea69adff0;hpb=4940d007cce43a135f1b448902f5a3571dbce62a;p=chaz%2Fopenbox diff --git a/openbox/event.c b/openbox/event.c index a75d7711..97b0da84 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -1064,6 +1064,7 @@ static void event_handle_client(ObClient *client, XEvent *e) if (e->xconfigurerequest.value_mask & CWStackMode) { ObClient *sibling = NULL; + gulong ignore_start; /* get the sibling */ if (e->xconfigurerequest.value_mask & CWSibling) { @@ -1075,9 +1076,13 @@ static void event_handle_client(ObClient *client, XEvent *e) } /* activate it rather than just focus it */ + if (!config_focus_under_mouse) + ignore_start = event_start_ignore_all_enters(); stacking_restack_request(client, sibling, e->xconfigurerequest.detail, TRUE); + if (!config_focus_under_mouse) + event_end_ignore_all_enters(ignore_start); /* if a stacking change moves the window without resizing */ move = TRUE; @@ -1420,9 +1425,16 @@ static void event_handle_client(ObClient *client, XEvent *e) e->xclient.data.l[2] == TopIf || e->xclient.data.l[2] == Opposite) { + gulong ignore_start; + + if (!config_focus_under_mouse) + ignore_start = event_start_ignore_all_enters(); /* just raise, don't activate */ stacking_restack_request(client, sibling, e->xclient.data.l[2], FALSE); + if (!config_focus_under_mouse) + event_end_ignore_all_enters(ignore_start); + /* send a synthetic ConfigureNotify, cuz this is supposed to be like a ConfigureRequest. */ client_reconfigure(client); @@ -1887,11 +1899,12 @@ static gboolean is_enter_focus_event_ignored(XEvent *e) /* XXX wraparound... */ ob_debug(" ignore range %u-%u\n", r->start, r->end); - if (e->xany.serial > r->end) { + if ((glong)(e->xany.serial - r->end) > 0) { + /* past the end */ ignore_serials = g_slist_delete_link(ignore_serials, it); g_free(r); } - else if (e->xany.serial >= r->start) + else if ((glong)(e->xany.serial - r->start) >= 0) return TRUE; } return FALSE;