From ff5b9397a4a2ca0e1b918b196cc14f9c6634d013 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steve=20Fr=C3=A9cinaux?= Date: Mon, 14 Sep 2009 20:31:23 +0200 Subject: Ensure the Contact List is moved to the current workspace when shown. The new metacity/mutter 2.27 only moves windows to current workspace on present() when the window is a dialog. The Contact List isn't one, so we try to be smart and move explicitely the window's toplevel GdkWindow on the current workspace before trying to present it. This has been tested successfully with mutter 2.27 and metacity 2.26. This fixes Bug 593883 - Empathy misbehaviour within gnome-shell. --- libempathy-gtk/empathy-ui-utils.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) (limited to 'libempathy-gtk/empathy-ui-utils.c') diff --git a/libempathy-gtk/empathy-ui-utils.c b/libempathy-gtk/empathy-ui-utils.c index 1b02195d2..3cf754f84 100644 --- a/libempathy-gtk/empathy-ui-utils.c +++ b/libempathy-gtk/empathy-ui-utils.c @@ -1295,17 +1295,15 @@ empathy_window_present (GtkWindow *window, gboolean steal_focus) { guint32 timestamp; + GdkWindow *window; g_return_if_fail (GTK_IS_WINDOW (window)); - /* There are three cases: hidden, visible, visible on another - * workspace. - */ - - if (!empathy_window_get_is_visible (window)) { - /* Hide it so present brings it to the current workspace. */ - gtk_widget_hide (GTK_WIDGET (window)); - } + /* Move the window to the current workspace before trying to show it. + * This is the behaviour people expect when clicking on the statusbar icon. */ + window = gtk_widget_get_window (GTK_WIDGET (window)); + if (window) + gdk_x11_window_move_to_current_desktop (window); timestamp = gtk_get_current_event_time (); gtk_window_present_with_time (window, timestamp); -- cgit v1.2.3