#ifdef GDK_WINDOWING_X11
GtkWidget *tray_icon;
GtkWidget *image;
+#else
+ GtkWidget *dummy_widget;
#endif
#ifdef GDK_WINDOWING_WIN32
- GtkWidget *dummy_widget;
NOTIFYICONDATAW nid;
gint taskbar_top;
gint last_click_x, last_click_y;
#endif
#ifdef GDK_WINDOWING_QUARTZ
- GtkWidget *dummy_widget;
GtkQuartzStatusIcon *status_item;
gchar *tooltip_text;
gchar *title;
gdk_event_free ((GdkEvent *) bc->event);
g_free (data);
- return FALSE;
+ return G_SOURCE_REMOVE;
}
static UINT taskbar_created_msg = 0;
g_signal_connect_swapped (priv->image, "size-allocate",
G_CALLBACK (gtk_status_icon_size_allocate), status_icon);
+#else /* !GDK_WINDOWING_X11 */
+ priv->dummy_widget = gtk_label_new ("");
#endif
#ifdef GDK_WINDOWING_WIN32
/* Are the system tray icons always 16 pixels square? */
priv->size = 16;
- priv->dummy_widget = gtk_label_new ("");
memset (&priv->nid, 0, sizeof (priv->nid));
#endif
#ifdef GDK_WINDOWING_QUARTZ
- priv->dummy_widget = gtk_label_new ("");
-
QUARTZ_POOL_ALLOC;
priv->status_item = [[GtkQuartzStatusIcon alloc] initWithStatusIcon:status_icon];
gtk_status_icon_screen_changed, status_icon);
gtk_widget_destroy (priv->image);
gtk_widget_destroy (priv->tray_icon);
+#else /* !GDK_WINDOWING_X11 */
+ gtk_widget_destroy (priv->dummy_widget);
#endif
#ifdef GDK_WINDOWING_WIN32
DestroyIcon (priv->nid.hIcon);
g_free (priv->tooltip_text);
- gtk_widget_destroy (priv->dummy_widget);
-
status_icons = g_slist_remove (status_icons, status_icon);
#endif
#endif
-#ifdef GDK_WINDOWING_X11
-
/* rounds the pixel size to the nearest size avaiable in the theme */
static gint
round_pixel_size (GtkWidget *widget,
return size;
}
-#endif
-
static void
gtk_status_icon_update_image (GtkStatusIcon *status_icon)
{
HICON prev_hicon;
#endif
GtkStyleContext *context;
+ GtkWidget *widget;
GtkImageType storage_type = _gtk_icon_helper_get_storage_type (priv->icon_helper);
GdkPixbuf *pixbuf;
gint round_size;
#ifdef GDK_WINDOWING_X11
- context = gtk_widget_get_style_context (priv->image);
+ widget = priv->image;
#else
- context = gtk_widget_get_style_context (priv->dummy_widget);
+ widget = priv->dummy_widget;
#endif
- round_size = round_pixel_size (priv->image, priv->size);
+ context = gtk_widget_get_style_context (widget);
+ round_size = round_pixel_size (widget, priv->size);
if (storage_type == GTK_IMAGE_PIXBUF)
{
emit_popup_menu_signal (status_icon, event->button, event->time);
return TRUE;
}
- else if (event->button == 1 && event->type == GDK_BUTTON_PRESS)
+ else if (event->button == GDK_BUTTON_PRIMARY && event->type == GDK_BUTTON_PRESS)
{
emit_activate_signal (status_icon);
return TRUE;
monitor_num = 0;
gtk_menu_set_monitor (menu, monitor_num);
- gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor);
+ gdk_screen_get_monitor_workarea (screen, monitor_num, &monitor);
gdk_window_get_origin (window, x, y);
- gtk_widget_get_preferred_size (GTK_WIDGET (menu),
- &menu_req, NULL);
+ menu_req.width = gtk_widget_get_allocated_width (GTK_WIDGET (menu));
+ menu_req.height = gtk_widget_get_allocated_height (GTK_WIDGET (menu));
gtk_widget_get_allocation (widget, &allocation);
if (_gtk_tray_icon_get_orientation (tray_icon) == GTK_ORIENTATION_VERTICAL)