all repos — openbox @ 5e27544d073856731363c1be9b132074e13259f6

openbox fork - make it a bit more like ryudo

sloppy focus fixes, ignore a few more enter events
Dana Jansens danakj@orodu.net
commit

5e27544d073856731363c1be9b132074e13259f6

parent

0855269035e17a1c4702d3cae85c98f46af66191

1 files changed, 6 insertions(+), 11 deletions(-)

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

@@ -394,11 +394,14 @@ case EnterNotify:

case LeaveNotify: /* NotifyUngrab occurs when a mouse button is released and the event is 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 || e->xcrossing.detail == NotifyInferior || (e->xcrossing.mode == NotifyUngrab && - e->xcrossing.detail == NotifyVirtual)) { + (e->xcrossing.detail == NotifyAncestor || + e->xcrossing.detail == NotifyNonlinearVirtual || + e->xcrossing.detail == NotifyVirtual))) { #ifdef DEBUG_FOCUS ob_debug("%sNotify mode %d detail %d on %lx IGNORED\n", (e->type == EnterNotify ? "Enter" : "Leave"),

@@ -698,15 +701,7 @@ frame_adjust_state(client->frame);

break; case OB_FRAME_CONTEXT_FRAME: if (client_normal(client)) { - if (ob_state() == OB_STATE_STARTING) { - /* 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) { + if (config_focus_follow) { #ifdef DEBUG_FOCUS ob_debug("EnterNotify on %lx, focusing window\n", client->window);