[empathy: 7/16] Pass the ChannelDispatcher timestamp onwards to window_present



commit c633b9b25a6bd729b8441382332e807d31331a93
Author: Sjoerd Simons <sjoerd simons collabora co uk>
Date:   Sat Apr 24 17:39:39 2010 +0100

    Pass the ChannelDispatcher timestamp onwards to window_present

 libempathy-gtk/empathy-ui-utils.c |   10 ++++++++--
 libempathy-gtk/empathy-ui-utils.h |    4 +++-
 src/empathy-chat-window.c         |    9 ++++++++-
 3 files changed, 19 insertions(+), 4 deletions(-)
---
diff --git a/libempathy-gtk/empathy-ui-utils.c b/libempathy-gtk/empathy-ui-utils.c
index 3f37ea2..70098ad 100644
--- a/libempathy-gtk/empathy-ui-utils.c
+++ b/libempathy-gtk/empathy-ui-utils.c
@@ -1392,10 +1392,10 @@ empathy_window_iconify (GtkWindow *window, GtkStatusIcon *status_icon)
 
 /* Takes care of moving the window to the current workspace. */
 void
-empathy_window_present (GtkWindow *window)
+empathy_window_present_with_time (GtkWindow *window,
+			guint32 timestamp)
 {
 	GdkWindow *gdk_window;
-	guint32 timestamp;
 
 	g_return_if_fail (GTK_IS_WINDOW (window));
 
@@ -1436,6 +1436,12 @@ empathy_window_present (GtkWindow *window)
 	gtk_window_deiconify (window);
 }
 
+void
+empathy_window_present (GtkWindow *window)
+{
+  empathy_window_present_with_time (window, GDK_CURRENT_TIME);
+}
+
 GtkWindow *
 empathy_get_toplevel_window (GtkWidget *widget)
 {
diff --git a/libempathy-gtk/empathy-ui-utils.h b/libempathy-gtk/empathy-ui-utils.h
index 8834cb4..6dab137 100644
--- a/libempathy-gtk/empathy-ui-utils.h
+++ b/libempathy-gtk/empathy-ui-utils.h
@@ -104,7 +104,9 @@ gboolean    empathy_text_iter_backward_search           (const GtkTextIter*iter,
 							 const GtkTextIter*limit);
 /* Windows */
 gboolean    empathy_window_get_is_visible               (GtkWindow        *window);
-void        empathy_window_present                      (GtkWindow        *window);
+void        empathy_window_present                      (GtkWindow *window);
+void        empathy_window_present_with_time            (GtkWindow        *window,
+							 guint32 timestamp);
 void        empathy_window_iconify                      (GtkWindow        *window,
 							 GtkStatusIcon    *status_icon);
 GtkWindow * empathy_get_toplevel_window                 (GtkWidget        *widget);
diff --git a/src/empathy-chat-window.c b/src/empathy-chat-window.c
index bdd80ea..ca569e1 100644
--- a/src/empathy-chat-window.c
+++ b/src/empathy-chat-window.c
@@ -2288,9 +2288,16 @@ empathy_chat_window_present_chat (EmpathyChat *chat,
 		empathy_chat_window_add_chat (window, chat);
 	}
 
+	/* Don't force the window to show itself when it wasn't
+	 * an action by the user
+	 */
+	if (timestamp == EMPATHY_DISPATCHER_NON_USER_ACTION)
+		return;
+
 	priv = GET_PRIV (window);
 	empathy_chat_window_switch_to_chat (window, chat);
-	empathy_window_present (GTK_WINDOW (priv->dialog));
+	empathy_window_present_with_time (GTK_WINDOW (priv->dialog),
+	  CLAMP (timestamp, 0, G_MAXUINT32));
 
  	gtk_widget_grab_focus (chat->input_text_view);
 }



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