[empathy/gnome-3-2] empathy: rely on gtk_application_add_window() to manage the main loop



commit bec05425315c6ab2581300b9f0f98f8fe2e2273d
Author: Guillaume Desmottes <guillaume desmottes collabora co uk>
Date:   Tue Oct 25 17:03:28 2011 +0200

    empathy: rely on gtk_application_add_window() to manage the main loop
    
    We are not supposed to call gtk_main_quit() as we don't use gtk_main() any
    more. Instead we add the windows to the GtkApplication which will take care of
    exiting when they have been all destroyed.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=662504

 src/empathy-main-window.c |    2 +-
 src/empathy-status-icon.c |    4 +++-
 src/empathy.c             |    7 +++----
 3 files changed, 7 insertions(+), 6 deletions(-)
---
diff --git a/src/empathy-main-window.c b/src/empathy-main-window.c
index f372252..77070a8 100644
--- a/src/empathy-main-window.c
+++ b/src/empathy-main-window.c
@@ -1273,7 +1273,7 @@ static void
 main_window_chat_quit_cb (GtkAction         *action,
 			  EmpathyMainWindow *window)
 {
-	gtk_main_quit ();
+	gtk_widget_destroy (GTK_WIDGET (window));
 }
 
 static void
diff --git a/src/empathy-status-icon.c b/src/empathy-status-icon.c
index d6f5b2e..3aa27a4 100644
--- a/src/empathy-status-icon.c
+++ b/src/empathy-status-icon.c
@@ -320,7 +320,9 @@ static void
 status_icon_quit_cb (GtkAction         *action,
 		     EmpathyStatusIcon *icon)
 {
-	gtk_main_quit ();
+	EmpathyStatusIconPriv *priv = GET_PRIV (icon);
+
+	gtk_widget_destroy (priv->window);
 }
 
 static void
diff --git a/src/empathy.c b/src/empathy.c
index e95ad1d..505949d 100644
--- a/src/empathy.c
+++ b/src/empathy.c
@@ -181,9 +181,6 @@ empathy_app_finalize (GObject *object)
 
   g_free (self->preferences_tab);
 
-  if (self->window != NULL)
-    gtk_widget_destroy (self->window);
-
   if (finalize != NULL)
     finalize (object);
 }
@@ -348,12 +345,14 @@ empathy_app_command_line (GApplication *app,
           g_error_free (error);
         }
 
-      g_application_hold (G_APPLICATION (app));
       self->activated = TRUE;
 
       /* Setting up UI */
       self->window = empathy_main_window_dup ();
 
+      gtk_application_add_window (GTK_APPLICATION (app),
+          GTK_WINDOW (self->window));
+
       /* check if Shell is running */
       dbus = tp_dbus_daemon_dup (&error);
       g_assert_no_error (error);



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