Make transparent tray icons work. (#320034, based on a patch by Dan

2006-06-19  Matthias Clasen  <mclasen@redhat.com>

	Make transparent tray icons work.  (#320034, based on a
	patch by Dan Winship)

	* gtk/gtktrayicon-x11.c (gtk_tray_icon_init): Make trayicons
	app-paintable and non-double buffered.

	* gtk/gtkrc.c (_gtk_rc_init): Give tray icons a parent-relative
	background in the default style.
This commit is contained in:
Matthias Clasen 2006-06-19 23:53:28 +00:00 committed by Matthias Clasen
parent e13ccaa957
commit 219aa66d5d
4 changed files with 46 additions and 1 deletions

View File

@ -1,3 +1,14 @@
2006-06-19 Matthias Clasen <mclasen@redhat.com>
Make transparent tray icons work. (#320034, based on a
patch by Dan Winship)
* gtk/gtktrayicon-x11.c (gtk_tray_icon_init): Make trayicons
app-paintable and non-double buffered.
* gtk/gtkrc.c (_gtk_rc_init): Give tray icons a parent-relative
background in the default style.
2006-06-19 Matthias Clasen <mclasen@redhat.com>
* gtk/updateiconcache.c: Marks strings for translation. (#314278,

View File

@ -1,3 +1,14 @@
2006-06-19 Matthias Clasen <mclasen@redhat.com>
Make transparent tray icons work. (#320034, based on a
patch by Dan Winship)
* gtk/gtktrayicon-x11.c (gtk_tray_icon_init): Make trayicons
app-paintable and non-double buffered.
* gtk/gtkrc.c (_gtk_rc_init): Give tray icons a parent-relative
background in the default style.
2006-06-19 Matthias Clasen <mclasen@redhat.com>
* gtk/updateiconcache.c: Marks strings for translation. (#314278,

View File

@ -810,7 +810,12 @@ _gtk_rc_init (void)
" text[PRELIGHT] = \"#ffffff\"\n"
"}\n"
"\n"
"style \"gtk-default-tray-icon-style\" {\n"
" bg_pixmap[NORMAL] = \"<parent>\"\n"
"}\n"
"\n"
"class \"GtkProgressBar\" style : gtk \"gtk-default-progress-bar-style\"\n"
"class \"GtkTrayIcon\" style : gtk \"gtk-default-tray-icon-style\"\n"
"widget \"gtk-tooltips*\" style : gtk \"gtk-default-tooltips-style\"\n"
"widget_class \"*<GtkMenuItem>*\" style : gtk \"gtk-default-menu-item-style\"\n"
"widget_class \"*<GtkMenuBar>*<GtkMenuItem>\" style : gtk \"gtk-default-menu-bar-item-style\"\n"

View File

@ -69,6 +69,8 @@ static void gtk_tray_icon_realize (GtkWidget *widget);
static void gtk_tray_icon_unrealize (GtkWidget *widget);
static gboolean gtk_tray_icon_delete (GtkWidget *widget,
GdkEventAny *event);
static gboolean gtk_tray_icon_expose (GtkWidget *widget,
GdkEventExpose *event);
static void gtk_tray_icon_update_manager_window (GtkTrayIcon *icon,
gboolean dock_if_realized);
@ -87,6 +89,7 @@ gtk_tray_icon_class_init (GtkTrayIconClass *class)
widget_class->realize = gtk_tray_icon_realize;
widget_class->unrealize = gtk_tray_icon_unrealize;
widget_class->delete_event = gtk_tray_icon_delete;
widget_class->expose_event = gtk_tray_icon_expose;
g_object_class_install_property (gobject_class,
PROP_ORIENTATION,
@ -108,7 +111,9 @@ gtk_tray_icon_init (GtkTrayIcon *icon)
icon->priv->stamp = 1;
icon->priv->orientation = GTK_ORIENTATION_HORIZONTAL;
gtk_widget_set_app_paintable (GTK_WIDGET (icon), TRUE);
gtk_widget_set_double_buffered (GTK_WIDGET (icon), FALSE);
gtk_widget_add_events (GTK_WIDGET (icon), GDK_PROPERTY_CHANGE_MASK);
}
@ -131,6 +136,19 @@ gtk_tray_icon_get_property (GObject *object,
}
}
static gboolean
gtk_tray_icon_expose (GtkWidget *widget,
GdkEventExpose *event)
{
gdk_window_clear_area (widget->window, event->area.x, event->area.y,
event->area.width, event->area.height);
if (GTK_WIDGET_CLASS (gtk_tray_icon_parent_class)->expose_event)
return GTK_WIDGET_CLASS (gtk_tray_icon_parent_class)->expose_event (widget, event);
return FALSE;
}
static void
gtk_tray_icon_get_orientation_property (GtkTrayIcon *icon)
{