summaryrefslogtreecommitdiff
path: root/gtk/gtkcolorswatch.c
diff options
context:
space:
mode:
authorCosimo Cecchi <cosimoc@gnome.org>2012-02-17 18:31:19 +0100
committerCosimo Cecchi <cosimoc@gnome.org>2012-02-18 09:55:45 +0100
commit8e85702dcab83b2f9c6a25e9d9ebf6a541ef8e95 (patch)
treec322c7cd0168b68dfe61f993e0da99fea31c82cc /gtk/gtkcolorswatch.c
parentb58d50a0da0b0b6a92392373ad0fae839dfca408 (diff)
downloadgtk+-8e85702dcab83b2f9c6a25e9d9ebf6a541ef8e95.tar.gz
color-swatch: derive directly from GtkWidget
Instead of GtkDrawingArea, since that calls in realize gtk_style_context_set_background(). We don't want that to happen, given that we do all the painting ourselves in _draw().
Diffstat (limited to 'gtk/gtkcolorswatch.c')
-rw-r--r--gtk/gtkcolorswatch.c31
1 files changed, 30 insertions, 1 deletions
diff --git a/gtk/gtkcolorswatch.c b/gtk/gtkcolorswatch.c
index 0996dcdb67..f0bde91648 100644
--- a/gtk/gtkcolorswatch.c
+++ b/gtk/gtkcolorswatch.c
@@ -62,7 +62,7 @@ enum
static guint signals[LAST_SIGNAL];
-G_DEFINE_TYPE (GtkColorSwatch, gtk_color_swatch, GTK_TYPE_DRAWING_AREA)
+G_DEFINE_TYPE (GtkColorSwatch, gtk_color_swatch, GTK_TYPE_WIDGET)
static void
gtk_color_swatch_init (GtkColorSwatch *swatch)
@@ -495,6 +495,34 @@ swatch_button_release (GtkWidget *widget,
return FALSE;
}
+static void
+swatch_realize (GtkWidget *widget)
+{
+ GtkAllocation allocation;
+ GdkWindow *window;
+ GdkWindowAttr attributes;
+ gint attributes_mask;
+
+ gtk_widget_set_realized (widget, TRUE);
+ gtk_widget_get_allocation (widget, &allocation);
+
+ attributes.window_type = GDK_WINDOW_CHILD;
+ attributes.x = allocation.x;
+ attributes.y = allocation.y;
+ attributes.width = allocation.width;
+ attributes.height = allocation.height;
+ attributes.wclass = GDK_INPUT_OUTPUT;
+ attributes.visual = gtk_widget_get_visual (widget);
+ attributes.event_mask = gtk_widget_get_events (widget) | GDK_EXPOSURE_MASK;
+
+ attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL;
+
+ window = gdk_window_new (gtk_widget_get_parent_window (widget),
+ &attributes, attributes_mask);
+ gdk_window_set_user_data (window, widget);
+ gtk_widget_set_window (widget, window);
+}
+
static gboolean
swatch_popup_menu (GtkWidget *swatch)
{
@@ -582,6 +610,7 @@ gtk_color_swatch_class_init (GtkColorSwatchClass *class)
widget_class->button_release_event = swatch_button_release;
widget_class->enter_notify_event = swatch_enter_notify;
widget_class->leave_notify_event = swatch_leave_notify;
+ widget_class->realize = swatch_realize;
signals[ACTIVATE] =
g_signal_new ("activate",