From a69ce37546a42a1e5b84657d14ecbf184f907432 Mon Sep 17 00:00:00 2001 From: Volker Sobek Date: Wed, 26 Aug 2009 18:32:06 +0200 Subject: [PATCH] Unminimize windows passed to meta_workspace_activate_with_focus() Unminimize minimized windows passed to meta_workspace_activate_with_focus() by calling meta_window_activate() on them instead of meta_window_focus() and meta_window_raise(). This fix makes sense because for the existing usage inside Mutter meta_workspace_activate_with_focus() is never called on a minimized window and for calls from outside Mutter there is no point in focusing a minimized window without unminimizing it first. Add a doc comment to meta_workspace_activate_with_focus(). http://bugzilla.gnome.org/show_bug.cgi?id=592393 --- src/core/workspace.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/core/workspace.c b/src/core/workspace.c index 4e28601e8..b875147bf 100644 --- a/src/core/workspace.c +++ b/src/core/workspace.c @@ -439,6 +439,25 @@ meta_workspace_queue_calc_showing (MetaWorkspace *workspace) } } +/** + * meta_workspace_activate_with_focus: + * @workspace: a #MetaWorkspace + * @focus_this: the #MetaWindow to be focused, or %NULL + * @timestamp: timestamp for @focus_this + * + * Switches to @workspace and possibly activates the window @focus_this. + * + * The window @focus_this is activated by calling meta_window_activate() + * which will unminimize it and transient parents, raise it and give it + * the focus. + * + * If a window is currently being moved by the user, it will be + * moved to @workspace. + * + * The advantage of calling this function instead of meta_workspace_activate() + * followed by meta_window_activate() is that it happens as a unit, so + * no other window gets focused first before @focus_this. + */ void meta_workspace_activate_with_focus (MetaWorkspace *workspace, MetaWindow *focus_this, @@ -562,8 +581,7 @@ meta_workspace_activate_with_focus (MetaWorkspace *workspace, */ if (focus_this) { - meta_window_focus (focus_this, timestamp); - meta_window_raise (focus_this); + meta_window_activate (focus_this, timestamp); } else if (move_window) {