Blame SOURCES/xchat-2.8.8-restore-status-icon.patch

8fa6cd
diff -urNp xchat-2.8.8.orig/src/fe-gtk/plugin-tray.c xchat-2.8.8/src/fe-gtk/plugin-tray.c
8fa6cd
--- xchat-2.8.8.orig/src/fe-gtk/plugin-tray.c	2019-08-16 15:08:14.591032240 +0200
8fa6cd
+++ xchat-2.8.8/src/fe-gtk/plugin-tray.c	2019-08-16 15:09:06.772393960 +0200
8fa6cd
@@ -65,9 +65,13 @@ static int tray_priv_count = 0;
8fa6cd
 static int tray_pub_count = 0;
8fa6cd
 static int tray_hilight_count = 0;
8fa6cd
 static int tray_file_count = 0;
8fa6cd
+static int tray_restore_timer = 0;
8fa6cd
 
8fa6cd
 
8fa6cd
 void tray_apply_setup (void);
8fa6cd
+static gboolean tray_menu_try_restore (void);
8fa6cd
+static void tray_cleanup (void);
8fa6cd
+static void tray_init (void);
8fa6cd
 
8fa6cd
 
8fa6cd
 static WinStatus
8fa6cd
@@ -406,6 +410,34 @@ tray_menu_restore_cb (GtkWidget *item, g
8fa6cd
 }
8fa6cd
 
8fa6cd
 static void
8fa6cd
+tray_menu_notify_cb (GObject *tray, GParamSpec *pspec, gpointer user_data)
8fa6cd
+{
8fa6cd
+	if (sticon)
8fa6cd
+	{
8fa6cd
+		if (!gtk_status_icon_is_embedded (sticon))
8fa6cd
+		{
8fa6cd
+			tray_restore_timer = g_timeout_add (500, (GSourceFunc)tray_menu_try_restore, NULL);
8fa6cd
+		}
8fa6cd
+		else
8fa6cd
+		{
8fa6cd
+			if (tray_restore_timer)
8fa6cd
+			{
8fa6cd
+				g_source_remove (tray_restore_timer);
8fa6cd
+				tray_restore_timer = 0;
8fa6cd
+			}
8fa6cd
+		}
8fa6cd
+	}
8fa6cd
+}
8fa6cd
+
8fa6cd
+static gboolean
8fa6cd
+tray_menu_try_restore (void)
8fa6cd
+{
8fa6cd
+	tray_cleanup ();
8fa6cd
+	tray_init ();
8fa6cd
+	return TRUE;
8fa6cd
+}
8fa6cd
+
8fa6cd
+static void
8fa6cd
 tray_menu_quit_cb (GtkWidget *item, gpointer userdata)
8fa6cd
 {
8fa6cd
 	mg_open_quit_dialog (FALSE);
8fa6cd
@@ -555,6 +587,8 @@ tray_init (void)
8fa6cd
 							G_CALLBACK (tray_menu_cb), sticon);
8fa6cd
 	g_signal_connect (G_OBJECT (sticon), "activate",
8fa6cd
 							G_CALLBACK (tray_menu_restore_cb), NULL);
8fa6cd
+	g_signal_connect (G_OBJECT (sticon), "notify::embedded",
8fa6cd
+							G_CALLBACK (tray_menu_notify_cb), NULL);
8fa6cd
 }
8fa6cd
 
8fa6cd
 static int