[empathy] Ensure the Contact List is moved to the current workspace when shown.



commit ff5b9397a4a2ca0e1b918b196cc14f9c6634d013
Author: Steve Frécinaux <code istique net>
Date:   Mon Sep 14 20:31:23 2009 +0200

    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 files changed, 6 insertions(+), 8 deletions(-)
---
diff --git a/libempathy-gtk/empathy-ui-utils.c b/libempathy-gtk/empathy-ui-utils.c
index 1b02195..3cf754f 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);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]