aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2012-07-19 16:41:23 +0800
committerGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2012-09-12 17:49:25 +0800
commitb8863f14395f0e9e3201dd8bd2ffee938e7a50c9 (patch)
treed3cb269fb6527ab034532c5efacff73a121d8b69 /src
parentc338d01cc24c9e64789615fffa38d0b266543c65 (diff)
downloadgsoc2013-empathy-b8863f14395f0e9e3201dd8bd2ffee938e7a50c9.tar
gsoc2013-empathy-b8863f14395f0e9e3201dd8bd2ffee938e7a50c9.tar.gz
gsoc2013-empathy-b8863f14395f0e9e3201dd8bd2ffee938e7a50c9.tar.bz2
gsoc2013-empathy-b8863f14395f0e9e3201dd8bd2ffee938e7a50c9.tar.lz
gsoc2013-empathy-b8863f14395f0e9e3201dd8bd2ffee938e7a50c9.tar.xz
gsoc2013-empathy-b8863f14395f0e9e3201dd8bd2ffee938e7a50c9.tar.zst
gsoc2013-empathy-b8863f14395f0e9e3201dd8bd2ffee938e7a50c9.zip
roster-window: unprepare the individual manager before destroying the roster
https://bugzilla.gnome.org/show_bug.cgi?id=660128
Diffstat (limited to 'src')
-rw-r--r--src/empathy-roster-window.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/empathy-roster-window.c b/src/empathy-roster-window.c
index 0ec35e14a..c6a04fa89 100644
--- a/src/empathy-roster-window.c
+++ b/src/empathy-roster-window.c
@@ -944,13 +944,30 @@ roster_window_key_press_event_cb (GtkWidget *window,
}
static void
+unprepare_cb (GObject *source,
+ GAsyncResult *result,
+ gpointer user_data)
+{
+ GtkWidget *self = user_data;
+
+ gtk_widget_destroy (self);
+}
+
+static void
roster_window_chat_quit_cb (GSimpleAction *action,
GVariant *parameter,
gpointer user_data)
{
EmpathyRosterWindow *self = user_data;
- gtk_widget_destroy (GTK_WIDGET (self));
+ /* Destroying the window will make us leave the main loop and so exit the
+ * process. Before doing so we want to unprepare the individual manager.
+ * Just hide the window now and actually destroy it once Folks is done.
+ */
+ gtk_widget_hide (GTK_WIDGET (self));
+
+ empathy_individual_manager_unprepare_async (self->priv->individual_manager,
+ unprepare_cb, self);
}
static void