X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fevent.c;h=23a834b51162f61484045b68a21753155189ab28;hb=411cc1d1d9e0c7ad07fe6bce548ccf101a2f4c7a;hp=5388e227c4a3a7ce6d823496bf9d8645100cdf4a;hpb=d5f9df0845eb28dee542a789e43ca4cc1b6d0a4f;p=chaz%2Fopenbox diff --git a/openbox/event.c b/openbox/event.c index 5388e227..23a834b5 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -303,6 +303,11 @@ static void event_hack_mods(XEvent *e) static gboolean event_ignore(XEvent *e, ObClient *client) { switch(e->type) { + case EnterNotify: + case LeaveNotify: + if (e->xcrossing.detail == NotifyInferior) + return TRUE; + break; case FocusIn: /* NotifyAncestor is not ignored in FocusIn like it is in FocusOut because of RevertToPointerRoot. If the focus ends up reverting to @@ -669,22 +674,16 @@ static void event_handle_client(ObClient *client, XEvent *e) if (client != focus_client) { focus_set_client(client); frame_adjust_focus(client->frame, TRUE); + client_calc_layer(client); } break; case FocusOut: #ifdef DEBUG_FOCUS ob_debug("FocusOut on client for %lx\n", client->window); #endif - /* are we a fullscreen window or a transient of one? (checks layer) - if we are then we need to be iconified since we are losing focus - */ - if (client->layer == OB_STACKING_LAYER_FULLSCREEN && !client->iconic && - !client_search_focus_tree_full(client)) - /* iconify fullscreen windows when they and their transients - aren't focused */ - client_iconify(client, TRUE, TRUE); frame_adjust_focus(client->frame, FALSE); - break; + client_calc_layer(client); + break; case LeaveNotify: con = frame_context(client, e->xcrossing.window); switch (con) { @@ -753,7 +752,6 @@ static void event_handle_client(ObClient *client, XEvent *e) break; case OB_FRAME_CONTEXT_FRAME: if (e->xcrossing.mode == NotifyGrab || - e->xcrossing.detail == NotifyInferior || e->xcrossing.mode == NotifyUngrab) { #ifdef DEBUG_FOCUS @@ -864,14 +862,14 @@ static void event_handle_client(ObClient *client, XEvent *e) switch (e->xconfigurerequest.detail) { case Below: case BottomIf: - stacking_lower(CLIENT_AS_WINDOW(client)); - break; + action_run_string("Lower", client); + break; case Above: case TopIf: default: - stacking_raise(CLIENT_AS_WINDOW(client)); - break; + action_run_string("Raise", client); + break; } } break;