From 8560ff88cd4c88bf105e6aa13f428c189e0f6c1b Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Fri, 30 Nov 2012 20:37:46 +0100 Subject: [PATCH] styleproperty: Add _gtk_css_style_property_changes_affect_size() This gives fast access to the question of wether a style update requires a resize. --- gtk/gtkcssstyleproperty.c | 13 +++++++++++++ gtk/gtkcssstylepropertyprivate.h | 3 +++ 2 files changed, 16 insertions(+) diff --git a/gtk/gtkcssstyleproperty.c b/gtk/gtkcssstyleproperty.c index 9327921d5..bd7d5a06c 100644 --- a/gtk/gtkcssstyleproperty.c +++ b/gtk/gtkcssstyleproperty.c @@ -46,6 +46,8 @@ enum { G_DEFINE_TYPE (GtkCssStyleProperty, _gtk_css_style_property, GTK_TYPE_STYLE_PROPERTY) +static GtkBitmask *_properties_affecting_size = NULL; + static void gtk_css_style_property_constructed (GObject *object) { @@ -55,6 +57,9 @@ gtk_css_style_property_constructed (GObject *object) property->id = klass->style_properties->len; g_ptr_array_add (klass->style_properties, property); + if (property->affects_size) + _properties_affecting_size = _gtk_bitmask_set (_properties_affecting_size, property->id, TRUE); + G_OBJECT_CLASS (_gtk_css_style_property_parent_class)->constructed (object); } @@ -292,6 +297,8 @@ _gtk_css_style_property_class_init (GtkCssStylePropertyClass *klass) property_class->parse_value = gtk_css_style_property_parse_value; klass->style_properties = g_ptr_array_new (); + + _properties_affecting_size = _gtk_bitmask_new (); } static GtkCssValue * @@ -446,3 +453,9 @@ _gtk_css_style_property_get_initial_value (GtkCssStyleProperty *property) return property->initial_value; } + +gboolean +_gtk_css_style_property_changes_affect_size (const GtkBitmask *changes) +{ + return _gtk_bitmask_intersects (changes, _properties_affecting_size); +} diff --git a/gtk/gtkcssstylepropertyprivate.h b/gtk/gtkcssstylepropertyprivate.h index 34411e069..00d8437a8 100644 --- a/gtk/gtkcssstylepropertyprivate.h +++ b/gtk/gtkcssstylepropertyprivate.h @@ -80,6 +80,9 @@ GtkCssValue * _gtk_css_style_property_get_initial_value void _gtk_css_style_property_print_value (GtkCssStyleProperty *property, GtkCssValue *value, GString *string); + +gboolean _gtk_css_style_property_changes_affect_size + (const GtkBitmask *changes); G_END_DECLS -- 2.43.2