update focus_hilite appropriately for when changing desktops

This commit is contained in:
Dana Jansens 2007-03-12 05:44:16 +00:00
parent c018e21220
commit 3a33642be4
2 changed files with 9 additions and 2 deletions

View file

@ -452,6 +452,7 @@ static void event_process(const XEvent *ec, gpointer data)
ob_debug("UNKNOWN FOCUS %s (d %d, m %d) window 0x%x\n",
(e->type == FocusIn ? "IN" : "OUT"),
detail, mode, window);
}
#endif
event_set_lasttime(e);
@ -523,7 +524,7 @@ static void event_process(const XEvent *ec, gpointer data)
if (e->type == ButtonPress || e->type == ButtonRelease ||
e->type == MotionNotify)
mouse_event(client, e);
else if (e->type == KeyPress)
else if (e->type == KeyPress) {
keyboard_event((focus_cycle_target ? focus_cycle_target :
(focus_hilite ? focus_hilite : client)),
e);
@ -531,6 +532,7 @@ static void event_process(const XEvent *ec, gpointer data)
}
}
}
}
static void event_handle_root(XEvent *e)
{
@ -678,6 +680,7 @@ static void event_handle_client(ObClient *client, XEvent *e)
}
/* This client is no longer focused, so show that */
focus_hilite = NULL;
frame_adjust_focus(client->frame, FALSE);
client_calc_layer(client);
break;

View file

@ -30,7 +30,11 @@ struct _ObClient;
/*! The client which is currently focused */
extern struct _ObClient *focus_client;
/*! The client which is being decorated as focused, not always matching the
real focus, but this is used to track it so that it can be resolved to match
real focus, but this is used to track it so that it can be resolved to match.
This is for when you change desktops. We know which window is *going to be*
focused, so we hilight it. But since it's hilighted, we also want
keybindings to go to it, which is really what this is for.
*/
extern struct _ObClient *focus_hilite;
/*! The client which appears focused during a focus cycle operation */