COMPOSITED_CHANGED,
QUERY_TOOLTIP,
DRAG_FAILED,
+ STYLE_UPDATED,
LAST_SIGNAL
};
gint y,
gboolean keyboard_tip,
GtkTooltip *tooltip);
+static void gtk_widget_real_style_updated (GtkWidget *widget);
static gboolean gtk_widget_real_show_help (GtkWidget *widget,
GtkWidgetHelpType help_type);
klass->can_activate_accel = gtk_widget_real_can_activate_accel;
klass->grab_broken_event = NULL;
klass->query_tooltip = gtk_widget_real_query_tooltip;
+ klass->style_updated = gtk_widget_real_style_updated;
klass->show_help = gtk_widget_real_show_help;
G_TYPE_NONE, 1,
GTK_TYPE_STYLE);
+ widget_signals[STYLE_UPDATED] =
+ g_signal_new (I_("style-updated"),
+ G_TYPE_FROM_CLASS (gobject_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (GtkWidgetClass, style_updated),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
/**
* GtkWidget::direction-changed:
* @widget: the object on which the signal is emitted
return FALSE;
}
+static void
+gtk_widget_real_style_updated (GtkWidget *widget)
+{
+ GtkStyleContext *context;
+
+ context = g_object_get_qdata (G_OBJECT (widget),
+ quark_style_context);
+ if (context)
+ gtk_style_context_invalidate (context);
+}
+
static gboolean
gtk_widget_real_show_help (GtkWidget *widget,
GtkWidgetHelpType help_type)
return path;
}
+static void
+style_context_changed (GtkStyleContext *context,
+ gpointer user_data)
+{
+ GtkWidget *widget = user_data;
+
+ g_signal_emit (widget, widget_signals[STYLE_UPDATED], 0);
+}
+
GtkStyleContext *
gtk_widget_get_style_context (GtkWidget *widget)
{
"direction", gtk_widget_get_direction (widget),
NULL);
+ g_signal_connect (context, "changed",
+ G_CALLBACK (style_context_changed), widget);
g_object_set_qdata_full (G_OBJECT (widget),
quark_style_context, context,