#include "gtktypebuiltins.h"
#include "gtkprivate.h"
#include "gtkscrollable.h"
+#include "gtkorientableprivate.h"
#include "gtkintl.h"
#define DEFAULT_ICON_SIZE GTK_ICON_SIZE_SMALL_TOOLBAR
if ((guint) g_value_get_enum (value) != palette->priv->orientation)
{
palette->priv->orientation = g_value_get_enum (value);
+ _gtk_orientable_set_style_classes (GTK_ORIENTABLE (palette));
gtk_tool_palette_reconfigured (palette);
}
break;
}
}
-static gboolean
-gtk_tool_palette_draw (GtkWidget *widget,
- cairo_t *cr)
-{
- GtkToolPalette *palette = GTK_TOOL_PALETTE (widget);
- GdkDisplay *display;
- GdkWindow *window;
- guint i;
-
- window = gtk_widget_get_window (widget);
-
- display = gdk_window_get_display (window);
-
- if (!gdk_display_supports_composite (display))
- return FALSE;
-
- cairo_push_group (cr);
-
- for (i = 0; i < palette->priv->groups->len; ++i)
- {
- GtkToolItemGroupInfo *info = g_ptr_array_index (palette->priv->groups, i);
- if (info->widget)
- _gtk_tool_item_group_paint (info->widget, cr);
- }
-
- cairo_pop_group_to_source (cr);
-
- cairo_paint (cr);
-
- return FALSE;
-}
-
static void
gtk_tool_palette_realize (GtkWidget *widget)
{
gpointer callback_data)
{
GtkToolPalette *palette = GTK_TOOL_PALETTE (container);
- guint i;
-
+ guint i, len;
for (i = 0; i < palette->priv->groups->len; ++i)
{
GtkToolItemGroupInfo *info = g_ptr_array_index (palette->priv->groups, i);
+
+ len = palette->priv->groups->len;
+
if (info->widget)
callback (GTK_WIDGET (info->widget),
callback_data);
+
+ /* At destroy time, 'callback' results in removing a widget,
+ * here we just reset the current index to account for the removed widget. */
+ i -= (len - palette->priv->groups->len);
}
}
wclass->get_preferred_width = gtk_tool_palette_get_preferred_width;
wclass->get_preferred_height= gtk_tool_palette_get_preferred_height;
wclass->size_allocate = gtk_tool_palette_size_allocate;
- wclass->draw = gtk_tool_palette_draw;
wclass->realize = gtk_tool_palette_realize;
cclass->add = gtk_tool_palette_add;
G_CALLBACK (gtk_tool_palette_adjustment_value_changed),
palette);
priv->hadjustment = g_object_ref_sink (adjustment);
- /* FIXME: Adjustment should probably have it's values updated now */
+ /* FIXME: Adjustment should probably have its values updated now */
g_object_notify (G_OBJECT (palette), "hadjustment");
}
G_CALLBACK (gtk_tool_palette_adjustment_value_changed),
palette);
priv->vadjustment = g_object_ref_sink (adjustment);
- /* FIXME: Adjustment should probably have it's values updated now */
+ /* FIXME: Adjustment should probably have its values updated now */
g_object_notify (G_OBJECT (palette), "vadjustment");
}