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
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) {
break;
case OB_FRAME_CONTEXT_FRAME:
if (e->xcrossing.mode == NotifyGrab ||
- e->xcrossing.detail == NotifyInferior ||
e->xcrossing.mode == NotifyUngrab)
{
#ifdef DEBUG_FOCUS