focusin to the root window happens on both monitors when a focused window unmaps... boo...
This commit is contained in:
parent
eb1cd9cc49
commit
afd88015b5
1 changed files with 10 additions and 17 deletions
|
@ -454,23 +454,7 @@ static void event_process(const XEvent *ec, gpointer data)
|
||||||
/* crossing events for menu */
|
/* crossing events for menu */
|
||||||
event_handle_menu(e);
|
event_handle_menu(e);
|
||||||
} else if (e->type == FocusIn) {
|
} else if (e->type == FocusIn) {
|
||||||
if (e->xfocus.detail == NotifyPointerRoot ||
|
if (client && client != focus_client) {
|
||||||
e->xfocus.detail == NotifyDetailNone) {
|
|
||||||
ob_debug_type(OB_DEBUG_FOCUS, "Focus went to root\n");
|
|
||||||
/* Focus has been reverted to the root window or nothing
|
|
||||||
FocusOut events come after UnmapNotify, so we don't need to
|
|
||||||
worry about focusing an invalid window
|
|
||||||
*/
|
|
||||||
focus_fallback(TRUE);
|
|
||||||
} else if (e->xfocus.detail == NotifyInferior) {
|
|
||||||
ob_debug_type(OB_DEBUG_FOCUS, "Focus went to parent\n");
|
|
||||||
/* Focus has been reverted to parent, which is our frame window,
|
|
||||||
or the root window
|
|
||||||
FocusOut events come after UnmapNotify, so we don't need to
|
|
||||||
worry about focusing an invalid window
|
|
||||||
*/
|
|
||||||
focus_fallback(TRUE);
|
|
||||||
} else if (client && client != focus_client) {
|
|
||||||
frame_adjust_focus(client->frame, TRUE);
|
frame_adjust_focus(client->frame, TRUE);
|
||||||
focus_set_client(client);
|
focus_set_client(client);
|
||||||
client_calc_layer(client);
|
client_calc_layer(client);
|
||||||
|
@ -491,6 +475,15 @@ static void event_process(const XEvent *ec, gpointer data)
|
||||||
} else if (ce.xany.window == e->xany.window) {
|
} else if (ce.xany.window == e->xany.window) {
|
||||||
/* If focus didn't actually move anywhere, there is nothing to do*/
|
/* If focus didn't actually move anywhere, there is nothing to do*/
|
||||||
nomove = TRUE;
|
nomove = TRUE;
|
||||||
|
} else if (ce.xfocus.detail == NotifyPointerRoot ||
|
||||||
|
ce.xfocus.detail == NotifyDetailNone ||
|
||||||
|
ce.xfocus.detail == NotifyInferior) {
|
||||||
|
ob_debug_type(OB_DEBUG_FOCUS, "Focus went to root\n");
|
||||||
|
/* Focus has been reverted to the root window or nothing
|
||||||
|
FocusOut events come after UnmapNotify, so we don't need to
|
||||||
|
worry about focusing an invalid window
|
||||||
|
*/
|
||||||
|
focus_fallback(TRUE);
|
||||||
} else {
|
} else {
|
||||||
/* Focus did move, so process the FocusIn event */
|
/* Focus did move, so process the FocusIn event */
|
||||||
ObEventData ed = { .ignored = FALSE };
|
ObEventData ed = { .ignored = FALSE };
|
||||||
|
|
Loading…
Reference in a new issue