aboutsummaryrefslogtreecommitdiffstats
path: root/mail/mail-display.c
diff options
context:
space:
mode:
authorNot Zed <NotZed@Ximian.com>2003-03-26 11:38:30 +0800
committerMichael Zucci <zucchi@src.gnome.org>2003-03-26 11:38:30 +0800
commit0983e2cf9111f44177ec6355627beae1fb651d8e (patch)
treebe1d72e8e0c0a913947d4c885e42b28959db992e /mail/mail-display.c
parent992e6be111c812528dacf9b1e5fb68e2015ec524 (diff)
downloadgsoc2013-evolution-0983e2cf9111f44177ec6355627beae1fb651d8e.tar.gz
gsoc2013-evolution-0983e2cf9111f44177ec6355627beae1fb651d8e.tar.zst
gsoc2013-evolution-0983e2cf9111f44177ec6355627beae1fb651d8e.zip
Undo jeff's patch below for #40275, the destroy timeout is already removed
2003-03-26 Not Zed <NotZed@Ximian.com> * mail-display.c (popup_window_destroy_cb): Undo jeff's patch below for #40275, the destroy timeout is already removed in popup_info_free. Unref the widget 'w' when we're done with it. (popup_info_free): Move everything in here to popup_window_destroy and remove, since nothing else uses it. (make_popup_window): Ref the widget so it doesn't go away before we're finished with it. Really fixes bug #40275/40188. svn path=/trunk/; revision=20512
Diffstat (limited to 'mail/mail-display.c')
-rw-r--r--mail/mail-display.c35
1 files changed, 12 insertions, 23 deletions
diff --git a/mail/mail-display.c b/mail/mail-display.c
index 15ba0fd8f4..99ba6895df 100644
--- a/mail/mail-display.c
+++ b/mail/mail-display.c
@@ -2261,38 +2261,26 @@ struct _PopupInfo {
static GtkWidget *the_popup = NULL;
static void
-popup_info_free (PopupInfo *pop)
-{
- if (pop) {
- if (pop->destroy_timeout)
- gtk_timeout_remove (pop->destroy_timeout);
-
- bonobo_event_source_client_remove_listener (bonobo_widget_get_objref (BONOBO_WIDGET (pop->w)),
- pop->listener,
- NULL);
- CORBA_Object_release (pop->listener, NULL);
- g_free (pop);
- }
-}
-
-static void
popup_window_destroy_cb (PopupInfo *pop, GObject *deadbeef)
{
the_popup = NULL;
-
- if (pop->destroy_timeout != 0) {
- gtk_timeout_remove (pop->destroy_timeout);
- pop->destroy_timeout = 0;
- }
-
- popup_info_free (pop);
+
+ if (pop->destroy_timeout != 0)
+ g_source_remove(pop->destroy_timeout);
+
+ bonobo_event_source_client_remove_listener (bonobo_widget_get_objref (BONOBO_WIDGET (pop->w)),
+ pop->listener,
+ NULL);
+ CORBA_Object_release (pop->listener, NULL);
+ g_object_unref(pop->w);
+ g_free (pop);
}
static int
popup_timeout_cb (gpointer user_data)
{
PopupInfo *pop = (PopupInfo *) user_data;
-
+
pop->destroy_timeout = 0;
gtk_widget_destroy (pop->win);
@@ -2358,6 +2346,7 @@ make_popup_window (GtkWidget *w)
gtk_widget_destroy (the_popup);
pop->w = w;
+ g_object_ref(w);
the_popup = pop->win = gtk_window_new (GTK_WINDOW_POPUP);
fr = gtk_frame_new (NULL);