Ignore enters on windows that are raised over focused window while being mapped.
Dana Jansens danakj@orodu.net
2 files changed,
12 insertions(+),
11 deletions(-)
M
openbox/client.c
→
openbox/client.c
@@ -203,6 +203,7 @@ Rect place;
Time launch_time; guint32 user_time; gboolean obplaced; + gulong ignore_start; ob_debug("Managing window: 0x%lx", window);@@ -468,19 +469,13 @@
/* grab mouse bindings before showing the window */ mouse_grab_for_client(self, TRUE); + if (!config_focus_under_mouse) + ignore_start = event_start_ignore_all_enters(); + /* this has to happen before we try focus the window, but we want it to happen after the client's stacking has been determined or it looks bad */ - { - gulong ignore_start; - if (!config_focus_under_mouse) - ignore_start = event_start_ignore_all_enters(); - - client_show(self); - - if (!config_focus_under_mouse) - event_end_ignore_all_enters(ignore_start); - } + client_show(self); /* activate/hilight/raise the window */ if (try_activate) {@@ -507,6 +502,9 @@ */
if (!client_restore_session_stacking(self)) stacking_raise(CLIENT_AS_WINDOW(self)); } + + if (!config_focus_under_mouse) + event_end_ignore_all_enters(ignore_start); /* add to client list/map */ client_list = g_list_append(client_list, self);
M
openbox/event.c
→
openbox/event.c
@@ -813,10 +813,13 @@ {
g_assert(config_focus_follow); if (is_enter_focus_event_ignored(event_curserial)) { - ob_debug_type(OB_DEBUG_FOCUS, "Ignoring enter event with serial %lu\n" + ob_debug_type(OB_DEBUG_FOCUS, "Ignoring enter event with serial %lu " "on client 0x%x", event_curserial, client->window); return; } + + ob_debug_type(OB_DEBUG_FOCUS, "using enter event with serial %lu " + "on client 0x%x", event_curserial, client->window); if (client_enter_focusable(client) && client_can_focus(client)) { if (config_focus_delay) {