From 8a9d458bafe368335d0acca2c324f878ee64463f Mon Sep 17 00:00:00 2001 From: Hans Breuer Date: Sun, 7 Nov 2010 21:19:48 +0100 Subject: [PATCH] Bug 609622 - disappearing statusicon 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) --- gtk/gtkstatusicon.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/gtk/gtkstatusicon.c b/gtk/gtkstatusicon.c index aaea50fbe..77b43651c 100644 --- a/gtk/gtkstatusicon.c +++ b/gtk/gtkstatusicon.c @@ -907,6 +907,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");