handle multiple focusin/out in one batch
This commit is contained in:
parent
7582194997
commit
dc9c39d042
1 changed files with 8 additions and 3 deletions
|
@ -344,15 +344,18 @@ static void event_done(gpointer data)
|
||||||
frame_adjust_focus(focus_in->frame, TRUE);
|
frame_adjust_focus(focus_in->frame, TRUE);
|
||||||
client_calc_layer(focus_in);
|
client_calc_layer(focus_in);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
focus_hilite = focus_in;
|
||||||
}
|
}
|
||||||
if (focus_out) {
|
if (focus_out) {
|
||||||
if (focus_out == focus_client)
|
if (focus_out == focus_client)
|
||||||
focus_set_client(NULL);
|
focus_set_client(NULL);
|
||||||
frame_adjust_focus(focus_out->frame, FALSE);
|
frame_adjust_focus(focus_out->frame, FALSE);
|
||||||
client_calc_layer(focus_out);
|
client_calc_layer(focus_out);
|
||||||
}
|
|
||||||
|
|
||||||
focus_hilite = focus_in;
|
if (!focus_in)
|
||||||
|
focus_hilite = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
if (focus_client != last) {
|
if (focus_client != last) {
|
||||||
if (!focus_client) {
|
if (!focus_client) {
|
||||||
|
@ -615,7 +618,9 @@ static void event_handle_client(ObClient *client, XEvent *e)
|
||||||
e->xfocus.window, client->window,
|
e->xfocus.window, client->window,
|
||||||
e->xfocus.mode, e->xfocus.detail);
|
e->xfocus.mode, e->xfocus.detail);
|
||||||
#endif
|
#endif
|
||||||
focus_out = client;
|
g_message("hilite %x client %x", focus_hilite, client);
|
||||||
|
if (focus_hilite == client)
|
||||||
|
focus_out = client;
|
||||||
if (focus_in == client)
|
if (focus_in == client)
|
||||||
focus_in = NULL;
|
focus_in = NULL;
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in a new issue