diff --git a/src/core/window.c b/src/core/window.c index edb61494e..964ada828 100644 --- a/src/core/window.c +++ b/src/core/window.c @@ -6390,7 +6390,7 @@ meta_window_propagate_focus_appearance (MetaWindow *window, child = window; parent = meta_window_get_transient_for (child); - while (child->type == META_WINDOW_MODAL_DIALOG && parent) + while (parent && (!focused || child->type == META_WINDOW_MODAL_DIALOG)) { gboolean child_focus_state_changed; @@ -6409,7 +6409,8 @@ meta_window_propagate_focus_appearance (MetaWindow *window, parent->attached_focus_window = NULL; } - if (child_focus_state_changed && !parent->has_focus) + if (child_focus_state_changed && !parent->has_focus && + parent != window->display->expected_focus_window) { g_object_notify (G_OBJECT (parent), "appears-focused"); if (parent->frame)