sloppy focus fixes, ignore a few more enter events
This commit is contained in:
parent
0855269035
commit
5e27544d07
1 changed files with 6 additions and 11 deletions
|
@ -394,11 +394,14 @@ static gboolean event_ignore(XEvent *e, ObClient *client)
|
||||||
case LeaveNotify:
|
case LeaveNotify:
|
||||||
/* NotifyUngrab occurs when a mouse button is released and the event is
|
/* NotifyUngrab occurs when a mouse button is released and the event is
|
||||||
caused, like when lowering a window */
|
caused, like when lowering a window */
|
||||||
/* NotifyVirtual occurs when ungrabbing the pointer */
|
/* NotifyVirtual and NotifyAncestor occurs when ungrabbing the
|
||||||
|
pointer (Ancestor happens when the pointer is on a window border) */
|
||||||
if (e->xcrossing.mode == NotifyGrab ||
|
if (e->xcrossing.mode == NotifyGrab ||
|
||||||
e->xcrossing.detail == NotifyInferior ||
|
e->xcrossing.detail == NotifyInferior ||
|
||||||
(e->xcrossing.mode == NotifyUngrab &&
|
(e->xcrossing.mode == NotifyUngrab &&
|
||||||
e->xcrossing.detail == NotifyVirtual)) {
|
(e->xcrossing.detail == NotifyAncestor ||
|
||||||
|
e->xcrossing.detail == NotifyNonlinearVirtual ||
|
||||||
|
e->xcrossing.detail == NotifyVirtual))) {
|
||||||
#ifdef DEBUG_FOCUS
|
#ifdef DEBUG_FOCUS
|
||||||
ob_debug("%sNotify mode %d detail %d on %lx IGNORED\n",
|
ob_debug("%sNotify mode %d detail %d on %lx IGNORED\n",
|
||||||
(e->type == EnterNotify ? "Enter" : "Leave"),
|
(e->type == EnterNotify ? "Enter" : "Leave"),
|
||||||
|
@ -698,15 +701,7 @@ static void event_handle_client(ObClient *client, XEvent *e)
|
||||||
break;
|
break;
|
||||||
case OB_FRAME_CONTEXT_FRAME:
|
case OB_FRAME_CONTEXT_FRAME:
|
||||||
if (client_normal(client)) {
|
if (client_normal(client)) {
|
||||||
if (ob_state() == OB_STATE_STARTING) {
|
if (config_focus_follow) {
|
||||||
/* move it to the top of the focus order */
|
|
||||||
guint desktop = client->desktop;
|
|
||||||
if (desktop == DESKTOP_ALL) desktop = screen_desktop;
|
|
||||||
focus_order[desktop] = g_list_remove(focus_order[desktop],
|
|
||||||
client);
|
|
||||||
focus_order[desktop] = g_list_prepend(focus_order[desktop],
|
|
||||||
client);
|
|
||||||
} else if (config_focus_follow) {
|
|
||||||
#ifdef DEBUG_FOCUS
|
#ifdef DEBUG_FOCUS
|
||||||
ob_debug("EnterNotify on %lx, focusing window\n",
|
ob_debug("EnterNotify on %lx, focusing window\n",
|
||||||
client->window);
|
client->window);
|
||||||
|
|
Loading…
Reference in a new issue