void glade_gtk_tool_item_post_create (GladeWidgetAdaptor *adaptor, GObject *object, GladeCreateReason reason) { if (GTK_IS_SEPARATOR_TOOL_ITEM (object)) return; if (reason == GLADE_CREATE_USER && gtk_bin_get_child (GTK_BIN (object)) == NULL) gtk_container_add (GTK_CONTAINER (object), glade_placeholder_new ()); }
static void configure_item_sensitivity (GtkToolItem *item, EggEditableToolbar *etoolbar) { GtkAction *action; char *name; name = g_object_get_data (G_OBJECT (item), EGG_ITEM_NAME); action = name ? find_action (etoolbar, name) : NULL; if (action) { g_object_notify (G_OBJECT (action), "sensitive"); } gtk_tool_item_set_use_drag_window (item, (etoolbar->priv->edit_mode > 0) || GTK_IS_SEPARATOR_TOOL_ITEM (item)); }
static void configure_item_cursor (GtkToolItem *item, EggEditableToolbar *etoolbar) { EggEditableToolbarPrivate *priv = etoolbar->priv; GtkWidget *widget = GTK_WIDGET (item); if (gtk_widget_get_window (widget) != NULL) { if (priv->edit_mode > 0) { GdkCursor *cursor; GdkScreen *screen; GdkPixbuf *pixbuf = NULL; screen = gtk_widget_get_screen (GTK_WIDGET (etoolbar)); cursor = gdk_cursor_new_for_display (gdk_screen_get_display (screen), GDK_HAND2); gdk_window_set_cursor (gtk_widget_get_window (widget), cursor); gdk_cursor_unref (cursor); gtk_drag_source_set (widget, GDK_BUTTON1_MASK, dest_drag_types, G_N_ELEMENTS (dest_drag_types), GDK_ACTION_MOVE); if (GTK_IS_SEPARATOR_TOOL_ITEM (item)) { pixbuf = new_separator_pixbuf (); } else { char *icon_name=NULL; char *stock_id=NULL; GtkAction *action; char *name; name = g_object_get_data (G_OBJECT (widget), EGG_ITEM_NAME); action = name ? find_action (etoolbar, name) : NULL; if (action) { g_object_get (action, "icon-name", &icon_name, "stock-id", &stock_id, NULL); } if (icon_name) { GdkScreen *screen; GtkIconTheme *icon_theme; GtkSettings *settings; gint width, height; screen = gtk_widget_get_screen (widget); icon_theme = gtk_icon_theme_get_for_screen (screen); settings = gtk_settings_get_for_screen (screen); if (!gtk_icon_size_lookup_for_settings (settings, GTK_ICON_SIZE_LARGE_TOOLBAR, &width, &height)) { width = height = 24; } pixbuf = gtk_icon_theme_load_icon (icon_theme, icon_name, MIN (width, height), 0, NULL); } else if (stock_id) { pixbuf = gtk_widget_render_icon (widget, stock_id, GTK_ICON_SIZE_LARGE_TOOLBAR, NULL); } g_free (icon_name); g_free (stock_id); } if (G_UNLIKELY (!pixbuf)) { return; } gtk_drag_source_set_icon_pixbuf (widget, pixbuf); g_object_unref (pixbuf); } else { gdk_window_set_cursor (gtk_widget_get_window (GTK_WIDGET(item)), NULL); } } }