aboutsummaryrefslogtreecommitdiff
path: root/src/trayicon.c
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-10-17 06:59:31 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-10-17 06:59:31 +0000
commit2d4514560cab30e8d856eadfaa16bff7fb6ea6b3 (patch)
tree4d83129c465f681f783ab62b18c2f6b5efa60370 /src/trayicon.c
parent5c0a3497e9d19f1fc1b26c1ec335d82b1f3ac2f1 (diff)
handle destroy event properly.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@653 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'src/trayicon.c')
-rw-r--r--src/trayicon.c15
1 files changed, 15 insertions, 0 deletions
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)