summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2011-08-27 01:26:48 -0400
committerMatthias Clasen <mclasen@redhat.com>2011-08-27 01:26:48 -0400
commitc8e8cdaaf49a6fc67d3e5c99cb9a0d266c748584 (patch)
tree0b184c299add58c07b549a0cbaf773fc8d0588b0
parent8f3e43326bcc601c47390db9c583a51b3c4a13fe (diff)
downloadgtk+-c8e8cdaaf49a6fc67d3e5c99cb9a0d266c748584.tar.gz
Make gtk_status_icon_set_name() work reliably
-rw-r--r--gtk/gtkstatusicon.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/gtk/gtkstatusicon.c b/gtk/gtkstatusicon.c
index 6e53bc9f71..8d5a0efbb2 100644
--- a/gtk/gtkstatusicon.c
+++ b/gtk/gtkstatusicon.c
@@ -2964,6 +2964,17 @@ gtk_status_icon_set_name (GtkStatusIcon *status_icon,
priv = status_icon->priv;
#ifdef GDK_WINDOWING_X11
- gtk_window_set_wmclass (GTK_WINDOW (priv->tray_icon), name, name);
+ if (gtk_widget_get_realized (priv->tray_icon))
+ {
+ /* gtk_window_set_wmclass() only operates on non-realized windows,
+ * so temporarily unrealize the tray here
+ */
+ gtk_widget_hide (priv->tray_icon);
+ gtk_widget_unrealize (priv->tray_icon);
+ gtk_window_set_wmclass (GTK_WINDOW (priv->tray_icon), name, name);
+ gtk_widget_show (priv->tray_icon);
+ }
+ else
+ gtk_window_set_wmclass (GTK_WINDOW (priv->tray_icon), name, name);
#endif
}