]> Pileus Git - ~andy/gtk/commitdiff
Bug 609622 - disappearing statusicon
authorHans Breuer <hans@breuer.org>
Sun, 7 Nov 2010 20:19:48 +0000 (21:19 +0100)
committerTristan Van Berkom <tristan.van.berkom@gmail.com>
Mon, 8 Nov 2010 02:31:03 +0000 (11:31 +0900)
Windows 7 is managing status icon visibility across process lifetime,
which did not work with GTK+ create icons. Apparently the mechanism
does not require use of new API (like suggested by MSDN), but it is
enough to give a "unique" tooltip at creation time.
Formerly this initial tooltip was not set at all, later setting via
gtk_status_icon_set_tooltip_text() is not enough, but luckily
different follow-up tooltips don't disturb the intended behavior.
(cherry picked from commit ae0544c636c72753098b698e4951897c609a75b6)
(cherry picked from commit 8a9d458bafe368335d0acca2c324f878ee64463f)

gtk/gtkstatusicon.c

index 7e7ab22a44c03100d0cdb7b429e9f523c3193c54..678cb8caabb404b169b0e0c4d551a4c1951ff160 100644 (file)
@@ -903,6 +903,17 @@ gtk_status_icon_init (GtkStatusIcon *status_icon)
   priv->nid.uCallbackMessage = WM_GTK_TRAY_NOTIFICATION;
   priv->nid.uFlags = NIF_MESSAGE;
 
+  /* To help win7 identify the icon create it with an application "unique" tip */
+  if (g_get_prgname ())
+  {
+    WCHAR *wcs = g_utf8_to_utf16 (g_get_prgname (), -1, NULL, NULL, NULL);
+
+    priv->nid.uFlags |= NIF_TIP;
+    wcsncpy (priv->nid.szTip, wcs, G_N_ELEMENTS (priv->nid.szTip) - 1);
+    priv->nid.szTip[G_N_ELEMENTS (priv->nid.szTip) - 1] = 0;
+    g_free (wcs);
+  }
+
   if (!Shell_NotifyIconW (NIM_ADD, &priv->nid))
     {
       g_warning (G_STRLOC ": Shell_NotifyIcon(NIM_ADD) failed");