From 2d4514560cab30e8d856eadfaa16bff7fb6ea6b3 Mon Sep 17 00:00:00 2001 From: hiro Date: Mon, 17 Oct 2005 06:59:31 +0000 Subject: handle destroy event properly. git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@653 ee746299-78ed-0310-b773-934348b2243d --- src/trayicon.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src/trayicon.c') diff --git a/src/trayicon.c b/src/trayicon.c index 02f8fb2b..53118fc9 100644 --- a/src/trayicon.c +++ b/src/trayicon.c @@ -45,10 +45,14 @@ static GtkTooltips *trayicon_tip; static void trayicon_button_pressed (GtkWidget *widget, GdkEventButton *event, gpointer data); +static void trayicon_destroy_cb (GtkWidget *widget, + gpointer data); GtkWidget *trayicon_create(MainWindow *mainwin) { trayicon = GTK_WIDGET(egg_tray_icon_new("Sylpheed")); + g_signal_connect(G_OBJECT(trayicon), "destroy", + G_CALLBACK(trayicon_destroy_cb), mainwin); eventbox = gtk_event_box_new(); gtk_container_add(GTK_CONTAINER(trayicon), eventbox); @@ -92,6 +96,17 @@ static void trayicon_button_pressed(GtkWidget *widget, GdkEventButton *event, gtk_window_present(GTK_WINDOW(mainwin->window)); } +static gboolean trayicon_restore(gpointer data) +{ + trayicon_create((MainWindow *)data); + return FALSE; +} + +static void trayicon_destroy_cb(GtkWidget *widget, gpointer data) +{ + g_idle_add(trayicon_restore, data); +} + #else /* GDK_WINDOWING_X11 */ GtkWidget *trayicon_create(MainWindow *mainwin) -- cgit v1.2.3