mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-02-19 13:30:36 +01:00
2006-02-24 Robert Love <rml@novell.com>
Patch from Dan Winship <danw@novell.com>: * gnome/applet/eggtrayicon.c: Update EggTrayIcon code. Set the gdk area to transparent. git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@1488 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
This commit is contained in:
parent
93255d0f55
commit
4fcf804bda
2 changed files with 52 additions and 0 deletions
|
|
@ -1,3 +1,9 @@
|
|||
2006-02-24 Robert Love <rml@novell.com>
|
||||
|
||||
Patch from Dan Winship <danw@novell.com>:
|
||||
* gnome/applet/eggtrayicon.c: Update EggTrayIcon code. Set the gdk
|
||||
area to transparent.
|
||||
|
||||
2006-02-21 Dan Williams <dcbw@redhat.com>
|
||||
|
||||
* gnome/applet/applet.[ch]
|
||||
|
|
|
|||
|
|
@ -67,6 +67,9 @@ static void egg_tray_icon_get_property (GObject *object,
|
|||
static void egg_tray_icon_realize (GtkWidget *widget);
|
||||
static void egg_tray_icon_unrealize (GtkWidget *widget);
|
||||
|
||||
static void egg_tray_icon_add (GtkContainer *container,
|
||||
GtkWidget *widget);
|
||||
|
||||
#ifdef GDK_WINDOWING_X11
|
||||
static void egg_tray_icon_update_manager_window (EggTrayIcon *icon,
|
||||
gboolean dock_if_realized);
|
||||
|
|
@ -114,6 +117,7 @@ egg_tray_icon_class_init (EggTrayIconClass *klass)
|
|||
{
|
||||
GObjectClass *gobject_class = (GObjectClass *)klass;
|
||||
GtkWidgetClass *widget_class = (GtkWidgetClass *)klass;
|
||||
GtkContainerClass *container_class = (GtkContainerClass *)klass;
|
||||
|
||||
parent_class = g_type_class_peek_parent (klass);
|
||||
|
||||
|
|
@ -122,6 +126,8 @@ egg_tray_icon_class_init (EggTrayIconClass *klass)
|
|||
widget_class->realize = egg_tray_icon_realize;
|
||||
widget_class->unrealize = egg_tray_icon_unrealize;
|
||||
|
||||
container_class->add = egg_tray_icon_add;
|
||||
|
||||
g_object_class_install_property (gobject_class,
|
||||
PROP_ORIENTATION,
|
||||
g_param_spec_enum ("orientation",
|
||||
|
|
@ -368,6 +374,36 @@ egg_tray_icon_manager_window_destroyed (EggTrayIcon *icon)
|
|||
|
||||
#endif
|
||||
|
||||
static gboolean
|
||||
transparent_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data)
|
||||
{
|
||||
gdk_window_clear_area (widget->window, event->area.x, event->area.y,
|
||||
event->area.width, event->area.height);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
make_transparent_again (GtkWidget *widget, GtkStyle *previous_style,
|
||||
gpointer user_data)
|
||||
{
|
||||
gdk_window_set_back_pixmap (widget->window, NULL, TRUE);
|
||||
}
|
||||
|
||||
static void
|
||||
make_transparent (GtkWidget *widget, gpointer user_data)
|
||||
{
|
||||
if (GTK_WIDGET_NO_WINDOW (widget) || GTK_WIDGET_APP_PAINTABLE (widget))
|
||||
return;
|
||||
|
||||
gtk_widget_set_app_paintable (widget, TRUE);
|
||||
gtk_widget_set_double_buffered (widget, FALSE);
|
||||
gdk_window_set_back_pixmap (widget->window, NULL, TRUE);
|
||||
g_signal_connect (widget, "expose_event",
|
||||
G_CALLBACK (transparent_expose_event), NULL);
|
||||
g_signal_connect_after (widget, "style_set",
|
||||
G_CALLBACK (make_transparent_again), NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
egg_tray_icon_realize (GtkWidget *widget)
|
||||
{
|
||||
|
|
@ -382,6 +418,8 @@ egg_tray_icon_realize (GtkWidget *widget)
|
|||
if (GTK_WIDGET_CLASS (parent_class)->realize)
|
||||
GTK_WIDGET_CLASS (parent_class)->realize (widget);
|
||||
|
||||
make_transparent (widget, NULL);
|
||||
|
||||
screen = gtk_widget_get_screen (widget);
|
||||
display = gdk_screen_get_display (screen);
|
||||
xdisplay = gdk_x11_display_get_xdisplay (display);
|
||||
|
|
@ -414,6 +452,14 @@ egg_tray_icon_realize (GtkWidget *widget)
|
|||
#endif
|
||||
}
|
||||
|
||||
static void
|
||||
egg_tray_icon_add (GtkContainer *container, GtkWidget *widget)
|
||||
{
|
||||
g_signal_connect (widget, "realize",
|
||||
G_CALLBACK (make_transparent), NULL);
|
||||
GTK_CONTAINER_CLASS (parent_class)->add (container, widget);
|
||||
}
|
||||
|
||||
EggTrayIcon *
|
||||
egg_tray_icon_new_for_screen (GdkScreen *screen, const char *name)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue