diff --git a/src/core/window-private.h b/src/core/window-private.h index 485a68348..67fe4d195 100644 --- a/src/core/window-private.h +++ b/src/core/window-private.h @@ -461,8 +461,6 @@ void meta_window_update_fullscreen_monitors (MetaWindow *window, unsigned long left, unsigned long right); -gboolean meta_window_appears_focused (MetaWindow *window); - /* args to move are window pos, not frame pos */ void meta_window_move (MetaWindow *window, gboolean user_op, diff --git a/src/core/window.c b/src/core/window.c index 8fd342cae..30bdeda21 100644 --- a/src/core/window.c +++ b/src/core/window.c @@ -9275,9 +9275,22 @@ transient_has_focus (MetaWindow *window, return FALSE; } +/** + * meta_window_appears_focused: + * @window: a #MetaWindow + * + * Determines if the window should be drawn with a focused appearance. This is + * true for focused windows but also true for windows with a focused modal + * dialog attached. + * + * Return value: %TRUE if the window should be drawn with a focused frame + */ gboolean meta_window_appears_focused (MetaWindow *window) { + /* FIXME: meta_window_foreach_transient() iterates over all windows; we + * should eat the complexity to cache a bit for this. + */ if (!window->has_focus && meta_prefs_get_attach_modal_dialogs ()) { gboolean focus = FALSE; diff --git a/src/include/window.h b/src/include/window.h index 8cdcd18e8..b3d3c4cf3 100644 --- a/src/include/window.h +++ b/src/include/window.h @@ -69,6 +69,7 @@ GType meta_window_get_type (void); MetaFrame *meta_window_get_frame (MetaWindow *window); gboolean meta_window_has_focus (MetaWindow *window); +gboolean meta_window_appears_focused (MetaWindow *window); gboolean meta_window_is_shaded (MetaWindow *window); gboolean meta_window_is_override_redirect (MetaWindow *window); gboolean meta_window_is_skip_taskbar (MetaWindow *window);