]> Pileus Git - ~andy/gtk/commitdiff
styleproperty: Add _gtk_css_style_property_changes_affect_size()
authorBenjamin Otte <otte@redhat.com>
Fri, 30 Nov 2012 19:37:46 +0000 (20:37 +0100)
committerBenjamin Otte <otte@redhat.com>
Fri, 30 Nov 2012 19:37:46 +0000 (20:37 +0100)
This gives fast access to the question of wether a style update requires
a resize.

gtk/gtkcssstyleproperty.c
gtk/gtkcssstylepropertyprivate.h

index 9327921d5a46afb76d864951ba6e05296e0026e2..bd7d5a06cb3b119314412527c66250cd28a5ed60 100644 (file)
@@ -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);
+}
index 34411e06933ccb14cf656ccfb0901224912e0711..00d8437a8bec5dfa86a9679b217fb7dce3ef4fe4 100644 (file)
@@ -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