gtk/gtktrayicon-x11.c: Use accessor functions to access GtkWidget

This commit is contained in:
Javier Jardón
2010-08-15 17:50:39 +02:00
parent 04fd195b9b
commit f3d6aa8bf3

View File

@ -311,14 +311,18 @@ gtk_tray_icon_expose (GtkWidget *widget,
GdkEventExpose *event) GdkEventExpose *event)
{ {
GtkTrayIcon *icon = GTK_TRAY_ICON (widget); GtkTrayIcon *icon = GTK_TRAY_ICON (widget);
GtkAllocation allocation;
GtkWidget *focus_child; GtkWidget *focus_child;
GdkWindow *window;
gint border_width, x, y, width, height; gint border_width, x, y, width, height;
gboolean retval = FALSE; gboolean retval = FALSE;
window = gtk_widget_get_window (widget);
if (icon->priv->manager_visual_rgba) if (icon->priv->manager_visual_rgba)
{ {
/* Clear to transparent */ /* Clear to transparent */
cairo_t *cr = gdk_cairo_create (widget->window); cairo_t *cr = gdk_cairo_create (window);
cairo_set_source_rgba (cr, 0, 0, 0, 0); cairo_set_source_rgba (cr, 0, 0, 0, 0);
cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
gdk_cairo_region (cr, event->region); gdk_cairo_region (cr, event->region);
@ -328,7 +332,7 @@ gtk_tray_icon_expose (GtkWidget *widget,
else else
{ {
/* Clear to parent-relative pixmap */ /* Clear to parent-relative pixmap */
gdk_window_clear_area (widget->window, event->area.x, event->area.y, gdk_window_clear_area (window, event->area.x, event->area.y,
event->area.width, event->area.height); event->area.width, event->area.height);
} }
@ -338,15 +342,17 @@ gtk_tray_icon_expose (GtkWidget *widget,
focus_child = gtk_container_get_focus_child (GTK_CONTAINER (widget)); focus_child = gtk_container_get_focus_child (GTK_CONTAINER (widget));
if (focus_child && gtk_widget_has_focus (focus_child)) if (focus_child && gtk_widget_has_focus (focus_child))
{ {
gtk_widget_get_allocation (widget, &allocation);
border_width = gtk_container_get_border_width (GTK_CONTAINER (widget)); border_width = gtk_container_get_border_width (GTK_CONTAINER (widget));
x = widget->allocation.x + border_width; x = allocation.x + border_width;
y = widget->allocation.y + border_width; y = allocation.y + border_width;
width = widget->allocation.width - 2 * border_width; width = allocation.width - 2 * border_width;
height = widget->allocation.height - 2 * border_width; height = allocation.height - 2 * border_width;
gtk_paint_focus (widget->style, widget->window, gtk_paint_focus (gtk_widget_get_style (widget),
window,
gtk_widget_get_state (widget), gtk_widget_get_state (widget),
&event->area, widget, "tray_icon", &event->area, widget, "tray_icon",
x, y, width, height); x, y, width, height);
@ -666,26 +672,29 @@ gtk_tray_icon_send_manager_message (GtkTrayIcon *icon,
long data2, long data2,
long data3) long data3)
{ {
GtkWidget *widget;
XClientMessageEvent ev; XClientMessageEvent ev;
Display *display; Display *display;
widget = GTK_WIDGET (icon);
memset (&ev, 0, sizeof (ev)); memset (&ev, 0, sizeof (ev));
ev.type = ClientMessage; ev.type = ClientMessage;
ev.window = window; ev.window = window;
ev.message_type = icon->priv->system_tray_opcode_atom; ev.message_type = icon->priv->system_tray_opcode_atom;
ev.format = 32; ev.format = 32;
ev.data.l[0] = gdk_x11_get_server_time (GTK_WIDGET (icon)->window); ev.data.l[0] = gdk_x11_get_server_time (gtk_widget_get_window (widget));
ev.data.l[1] = message; ev.data.l[1] = message;
ev.data.l[2] = data1; ev.data.l[2] = data1;
ev.data.l[3] = data2; ev.data.l[3] = data2;
ev.data.l[4] = data3; ev.data.l[4] = data3;
display = GDK_DISPLAY_XDISPLAY (gtk_widget_get_display (GTK_WIDGET (icon))); display = GDK_DISPLAY_XDISPLAY (gtk_widget_get_display (widget));
gdk_error_trap_push (); gdk_error_trap_push ();
XSendEvent (display, XSendEvent (display,
icon->priv->manager_window, False, NoEventMask, (XEvent *)&ev); icon->priv->manager_window, False, NoEventMask, (XEvent *)&ev);
gdk_display_sync (gtk_widget_get_display (GTK_WIDGET (icon))); gdk_display_sync (gtk_widget_get_display (widget));
gdk_error_trap_pop (); gdk_error_trap_pop ();
} }
@ -847,27 +856,29 @@ static void
gtk_tray_icon_realize (GtkWidget *widget) gtk_tray_icon_realize (GtkWidget *widget)
{ {
GtkTrayIcon *icon = GTK_TRAY_ICON (widget); GtkTrayIcon *icon = GTK_TRAY_ICON (widget);
GdkWindow *window;
/* Set our colormap before realizing */ /* Set our colormap before realizing */
gtk_tray_icon_set_colormap (icon); gtk_tray_icon_set_colormap (icon);
GTK_WIDGET_CLASS (gtk_tray_icon_parent_class)->realize (widget); GTK_WIDGET_CLASS (gtk_tray_icon_parent_class)->realize (widget);
window = gtk_widget_get_window (widget);
if (icon->priv->manager_visual_rgba) if (icon->priv->manager_visual_rgba)
{ {
/* Set a transparent background */ /* Set a transparent background */
GdkColor transparent = { 0, 0, 0, 0 }; /* Only pixel=0 matters */ GdkColor transparent = { 0, 0, 0, 0 }; /* Only pixel=0 matters */
gdk_window_set_background (widget->window, &transparent); gdk_window_set_background (window, &transparent);
} }
else else
{ {
/* Set a parent-relative background pixmap */ /* Set a parent-relative background pixmap */
gdk_window_set_back_pixmap (widget->window, NULL, TRUE); gdk_window_set_back_pixmap (window, NULL, TRUE);
} }
GTK_NOTE (PLUGSOCKET, GTK_NOTE (PLUGSOCKET,
g_print ("GtkStatusIcon %p: realized, window: %lx, socket window: %lx\n", g_print ("GtkStatusIcon %p: realized, window: %lx, socket window: %lx\n",
widget, widget,
(gulong) GDK_WINDOW_XWINDOW (widget->window), (gulong) GDK_WINDOW_XWINDOW (window),
GTK_PLUG (icon)->socket_window ? GTK_PLUG (icon)->socket_window ?
(gulong) GDK_WINDOW_XWINDOW (GTK_PLUG (icon)->socket_window) : 0UL)); (gulong) GDK_WINDOW_XWINDOW (GTK_PLUG (icon)->socket_window) : 0UL));