[gtk+/wip/baedert/drawing: 298/306] Remove all widget style property code



commit 5271ece1b6e5aa09047c7d3a8c2e9590cc621950
Author: Timm Bäder <mail baedert org>
Date:   Sun Jun 18 13:17:00 2017 +0200

    Remove all widget style property code

 docs/reference/gtk/gtk4-sections.txt |    8 -
 gtk/gtkcssprovider.c                 |  308 ----------------------------------
 gtk/gtkstylecascade.c                |   31 ----
 gtk/gtkstylecontext.c                |  277 ------------------------------
 gtk/gtkstylecontext.h                |   11 --
 gtk/gtkstyleprovider.c               |   38 ----
 gtk/gtkstyleprovider.h               |   16 --
 gtk/gtkwidget.c                      |  189 ---------------------
 gtk/gtkwidget.h                      |   17 --
 tests/testtreepos.c                  |    2 +-
 10 files changed, 1 insertions(+), 896 deletions(-)
---
diff --git a/docs/reference/gtk/gtk4-sections.txt b/docs/reference/gtk/gtk4-sections.txt
index 591bf12..eb2c829 100644
--- a/docs/reference/gtk/gtk4-sections.txt
+++ b/docs/reference/gtk/gtk4-sections.txt
@@ -4574,11 +4574,7 @@ gtk_widget_queue_draw_area
 gtk_widget_queue_draw_region
 gtk_widget_set_redraw_on_allocate
 gtk_widget_mnemonic_activate
-gtk_widget_class_install_style_property
-gtk_widget_class_find_style_property
 gtk_widget_send_focus_change
-gtk_widget_style_get
-gtk_widget_style_get_valist
 gtk_widget_class_set_accessible_type
 gtk_widget_class_set_accessible_role
 gtk_widget_get_accessible
@@ -5017,7 +5013,6 @@ GTK_STYLE_PROVIDER_PRIORITY_THEME
 GTK_STYLE_PROVIDER_PRIORITY_SETTINGS
 GTK_STYLE_PROVIDER_PRIORITY_APPLICATION
 GTK_STYLE_PROVIDER_PRIORITY_USER
-gtk_style_provider_get_style_property
 <SUBSECTION Standard>
 GTK_TYPE_STYLE_PROVIDER
 GTK_STYLE_PROVIDER
@@ -5138,9 +5133,6 @@ gtk_style_context_get_property
 gtk_style_context_get_screen
 gtk_style_context_get_frame_clock
 gtk_style_context_get_state
-gtk_style_context_get_style
-gtk_style_context_get_style_property
-gtk_style_context_get_style_valist
 gtk_style_context_get_valist
 gtk_style_context_get_section
 gtk_style_context_get_color
diff --git a/gtk/gtkcssprovider.c b/gtk/gtkcssprovider.c
index 123d3aa..5515dd7 100644
--- a/gtk/gtkcssprovider.c
+++ b/gtk/gtkcssprovider.c
@@ -81,7 +81,6 @@
 typedef struct GtkCssRuleset GtkCssRuleset;
 typedef struct _GtkCssScanner GtkCssScanner;
 typedef struct _PropertyValue PropertyValue;
-typedef struct _WidgetPropertyValue WidgetPropertyValue;
 typedef enum ParserScope ParserScope;
 typedef enum ParserSymbol ParserSymbol;
 
@@ -91,24 +90,14 @@ struct _PropertyValue {
   GtkCssSection       *section;
 };
 
-struct _WidgetPropertyValue {
-  WidgetPropertyValue *next;
-  char *name;
-  char *value;
-
-  GtkCssSection *section;
-};
-
 struct GtkCssRuleset
 {
   GtkCssSelector *selector;
   GtkCssSelectorTree *selector_match;
-  WidgetPropertyValue *widget_style;
   PropertyValue *styles;
   GtkBitmask *set_styles;
   guint n_styles;
   guint owns_styles : 1;
-  guint owns_widget_style : 1;
 };
 
 struct _GtkCssScanner
@@ -145,7 +134,6 @@ static guint css_provider_signals[LAST_SIGNAL] = { 0 };
 static void gtk_css_provider_finalize (GObject *object);
 static void gtk_css_style_provider_iface_init (GtkStyleProviderIface *iface);
 static void gtk_css_style_provider_private_iface_init (GtkStyleProviderPrivateInterface *iface);
-static void widget_property_value_list_free (WidgetPropertyValue *head);
 static void gtk_css_style_provider_emit_error (GtkStyleProviderPrivate *provider,
                                                GtkCssSection           *section,
                                                const GError            *error);
@@ -255,8 +243,6 @@ gtk_css_ruleset_init_copy (GtkCssRuleset       *new,
   /* First copy takes over ownership */
   if (ruleset->owns_styles)
     ruleset->owns_styles = FALSE;
-  if (ruleset->owns_widget_style)
-    ruleset->owns_widget_style = FALSE;
   if (new->set_styles)
     new->set_styles = _gtk_bitmask_copy (new->set_styles);
 }
@@ -279,82 +265,12 @@ gtk_css_ruleset_clear (GtkCssRuleset *ruleset)
     }
   if (ruleset->set_styles)
     _gtk_bitmask_free (ruleset->set_styles);
-  if (ruleset->owns_widget_style)
-    widget_property_value_list_free (ruleset->widget_style);
   if (ruleset->selector)
     _gtk_css_selector_free (ruleset->selector);
 
   memset (ruleset, 0, sizeof (GtkCssRuleset));
 }
 
-static WidgetPropertyValue *
-widget_property_value_new (char *name, GtkCssSection *section)
-{
-  WidgetPropertyValue *value;
-
-  value = g_slice_new0 (WidgetPropertyValue);
-
-  value->name = name;
-  if (gtk_keep_css_sections)
-    value->section = gtk_css_section_ref (section);
-
-  return value;
-}
-
-static void
-widget_property_value_free (WidgetPropertyValue *value)
-{
-  g_free (value->value);
-  g_free (value->name);
-  if (value->section)
-    gtk_css_section_unref (value->section);
-
-  g_slice_free (WidgetPropertyValue, value);
-}
-
-static void
-widget_property_value_list_free (WidgetPropertyValue *head)
-{
-  WidgetPropertyValue *l, *next;
-  for (l = head; l != NULL; l = next)
-    {
-      next = l->next;
-      widget_property_value_free (l);
-    }
-}
-
-static WidgetPropertyValue *
-widget_property_value_list_remove_name (WidgetPropertyValue *head, const char *name)
-{
-  WidgetPropertyValue *l, **last;
-
-  last = &head;
-
-  for (l = head; l != NULL; l = l->next)
-    {
-      if (strcmp (l->name, name) == 0)
-       {
-         *last = l->next;
-         widget_property_value_free (l);
-         break;
-       }
-
-      last = &l->next;
-    }
-
-  return head;
-}
-
-static void
-gtk_css_ruleset_add_style (GtkCssRuleset *ruleset,
-                           char          *name,
-                           WidgetPropertyValue *value)
-{
-  value->next = widget_property_value_list_remove_name (ruleset->widget_style, name);
-  ruleset->widget_style = value;
-  ruleset->owns_widget_style = TRUE;
-}
-
 static void
 gtk_css_ruleset_add (GtkCssRuleset       *ruleset,
                      GtkCssStyleProperty *property,
@@ -622,92 +538,9 @@ verify_tree_get_change_results (GtkCssProvider *provider,
 }
 
 
-static gboolean
-gtk_css_provider_get_style_property (GtkStyleProvider *provider,
-                                     GtkWidgetPath    *path,
-                                     GtkStateFlags     state,
-                                     GParamSpec       *pspec,
-                                     GValue           *value)
-{
-  GtkCssProvider *css_provider = GTK_CSS_PROVIDER (provider);
-  GtkCssProviderPrivate *priv = css_provider->priv;
-  WidgetPropertyValue *val;
-  GPtrArray *tree_rules;
-  GtkCssMatcher matcher;
-  gboolean found = FALSE;
-  gchar *prop_name;
-  gint i;
-
-  if (state == gtk_widget_path_iter_get_state (path, -1))
-    {
-      gtk_widget_path_ref (path);
-    }
-  else
-    {
-      path = gtk_widget_path_copy (path);
-      gtk_widget_path_iter_set_state (path, -1, state);
-    }
-
-  if (!_gtk_css_matcher_init (&matcher, path, NULL))
-    {
-      gtk_widget_path_unref (path);
-      return FALSE;
-    }
-
-  tree_rules = _gtk_css_selector_tree_match_all (priv->tree, &matcher);
-  if (tree_rules)
-    {
-      verify_tree_match_results (css_provider, &matcher, tree_rules);
-
-      prop_name = g_strdup_printf ("-%s-%s",
-                                   g_type_name (pspec->owner_type),
-                                   pspec->name);
-
-      for (i = tree_rules->len - 1; i >= 0; i--)
-        {
-          GtkCssRuleset *ruleset = tree_rules->pdata[i];
-
-          if (ruleset->widget_style == NULL)
-            continue;
-
-          for (val = ruleset->widget_style; val != NULL; val = val->next)
-            {
-              if (strcmp (val->name, prop_name) == 0)
-                {
-                  GtkCssScanner *scanner;
-
-                 scanner = gtk_css_scanner_new (css_provider,
-                                                 NULL,
-                                                 val->section,
-                                                 val->section != NULL ? gtk_css_section_get_file 
(val->section) : NULL,
-                                                 val->value);
-                  if (!val->section)
-                    gtk_css_scanner_push_section (scanner, GTK_CSS_SECTION_VALUE);
-                  found = _gtk_css_style_funcs_parse_value (value, scanner->parser);
-                  if (!val->section)
-                    gtk_css_scanner_pop_section (scanner, GTK_CSS_SECTION_VALUE);
-                  gtk_css_scanner_destroy (scanner);
-                 break;
-                }
-            }
-
-          if (found)
-            break;
-        }
-
-      g_free (prop_name);
-      g_ptr_array_free (tree_rules, TRUE);
-    }
-
-  gtk_widget_path_unref (path);
-
-  return found;
-}
-
 static void
 gtk_css_style_provider_iface_init (GtkStyleProviderIface *iface)
 {
-  iface->get_style_property = gtk_css_provider_get_style_property;
 }
 
 static GtkCssValue *
@@ -916,12 +749,6 @@ css_provider_commit (GtkCssProvider *css_provider,
 
   priv = css_provider->priv;
 
-  if (ruleset->styles == NULL && ruleset->widget_style == NULL)
-    {
-      g_slist_free_full (selectors, (GDestroyNotify) _gtk_css_selector_free);
-      return;
-    }
-
   for (l = selectors; l; l = l->next)
     {
       GtkCssRuleset new;
@@ -1311,67 +1138,6 @@ parse_selector_list (GtkCssScanner *scanner)
   return selectors;
 }
 
-static gboolean
-name_is_style_property (const char *name)
-{
-  if (name[0] != '-')
-    return FALSE;
-
-  if (g_str_has_prefix (name, "-gtk-"))
-    return FALSE;
-
-  return TRUE;
-}
-
-static void
-warn_if_deprecated (GtkCssScanner *scanner,
-                    const gchar   *name)
-{
-  gchar *n = NULL;
-  gchar *p;
-  const gchar *type_name;
-  const gchar *property_name;
-  GType type;
-  GTypeClass *class = NULL;
-  GParamSpec *pspec;
-
-  n = g_strdup (name);
-
-  /* skip initial - */
-  type_name = n + 1;
-
-  p = strchr (type_name, '-');
-  if (!p)
-    goto out;
-
-  p[0] = '\0';
-  property_name = p + 1;
-
-  type = g_type_from_name (type_name);
-  if (type == G_TYPE_INVALID ||
-      !g_type_is_a (type, GTK_TYPE_WIDGET))
-    goto out;
-
-  class = g_type_class_ref (type);
-  pspec = gtk_widget_class_find_style_property (GTK_WIDGET_CLASS (class), property_name);
-  if (!pspec)
-    goto out;
-
-  if (!(pspec->flags & G_PARAM_DEPRECATED))
-    goto out;
-
-  _gtk_css_parser_error_full (scanner->parser,
-                              GTK_CSS_PROVIDER_ERROR_DEPRECATED,
-                              "The style property %s:%s is deprecated and shouldn't be "
-                              "used anymore. It will be removed in a future version",
-                              g_type_name (pspec->owner_type), pspec->name);
-
-out:
-  g_free (n);
-  if (class)
-    g_type_class_unref (class);
-}
-
 static void
 parse_declaration (GtkCssScanner *scanner,
                    GtkCssRuleset *ruleset)
@@ -1386,19 +1152,6 @@ parse_declaration (GtkCssScanner *scanner,
     goto check_for_semicolon;
 
   property = _gtk_style_property_lookup (name);
-  if (property == NULL && !name_is_style_property (name))
-    {
-      gtk_css_provider_error (scanner->provider,
-                              scanner,
-                              GTK_CSS_PROVIDER_ERROR,
-                              GTK_CSS_PROVIDER_ERROR_NAME,
-                              "'%s' is not a valid property name",
-                              name);
-      _gtk_css_parser_resync (scanner->parser, TRUE, '}');
-      g_free (name);
-      gtk_css_scanner_pop_section (scanner, GTK_CSS_SECTION_DECLARATION);
-      return;
-    }
 
   if (property != NULL && strcmp (name, property->name) != 0)
     {
@@ -1490,34 +1243,6 @@ parse_declaration (GtkCssScanner *scanner,
 
       gtk_css_scanner_pop_section (scanner, GTK_CSS_SECTION_VALUE);
     }
-  else if (name_is_style_property (name))
-    {
-      char *value_str;
-
-      warn_if_deprecated (scanner, name);
-
-      gtk_css_scanner_push_section (scanner, GTK_CSS_SECTION_VALUE);
-
-      value_str = _gtk_css_parser_read_value (scanner->parser);
-      if (value_str)
-        {
-          WidgetPropertyValue *val;
-
-          val = widget_property_value_new (name, scanner->section);
-         val->value = value_str;
-
-          gtk_css_ruleset_add_style (ruleset, name, val);
-        }
-      else
-        {
-          _gtk_css_parser_resync (scanner->parser, TRUE, '}');
-          gtk_css_scanner_pop_section (scanner, GTK_CSS_SECTION_VALUE);
-          gtk_css_scanner_pop_section (scanner, GTK_CSS_SECTION_DECLARATION);
-          return;
-        }
-
-      gtk_css_scanner_pop_section (scanner, GTK_CSS_SECTION_VALUE);
-    }
   else
     g_free (name);
 
@@ -2145,20 +1870,10 @@ compare_properties (gconstpointer a, gconstpointer b, gpointer style)
                  _gtk_style_property_get_name (GTK_STYLE_PROPERTY (styles[*ub].property)));
 }
 
-static int
-compare_names (gconstpointer a, gconstpointer b)
-{
-  const WidgetPropertyValue *aa = a;
-  const WidgetPropertyValue *bb = b;
-  return strcmp (aa->name, bb->name);
-}
-
 static void
 gtk_css_ruleset_print (const GtkCssRuleset *ruleset,
                        GString             *str)
 {
-  GList *values, *walk;
-  WidgetPropertyValue *widget_value;
   guint i;
 
   _gtk_css_selector_tree_match_print (ruleset->selector_match, str);
@@ -2188,29 +1903,6 @@ gtk_css_ruleset_print (const GtkCssRuleset *ruleset,
       g_free (sorted);
     }
 
-  if (ruleset->widget_style)
-    {
-      values = NULL;
-      for (widget_value = ruleset->widget_style; widget_value != NULL; widget_value = widget_value->next)
-       values = g_list_prepend (values, widget_value);
-
-      /* so the output is identical for identical selector styles */
-      values = g_list_sort (values, compare_names);
-
-      for (walk = values; walk; walk = walk->next)
-        {
-         widget_value = walk->data;
-
-          g_string_append (str, "  ");
-          g_string_append (str, widget_value->name);
-          g_string_append (str, ": ");
-          g_string_append (str, widget_value->value);
-          g_string_append (str, ";\n");
-        }
-
-      g_list_free (values);
-    }
-
   g_string_append (str, "}\n");
 }
 
diff --git a/gtk/gtkstylecascade.c b/gtk/gtkstylecascade.c
index 7d947b2..985099c 100644
--- a/gtk/gtkstylecascade.c
+++ b/gtk/gtkstylecascade.c
@@ -96,40 +96,9 @@ gtk_style_cascade_iter_clear (GtkStyleCascadeIter *iter)
   g_free (iter->cascade_index);
 }
 
-static gboolean
-gtk_style_cascade_get_style_property (GtkStyleProvider *provider,
-                                      GtkWidgetPath    *path,
-                                      GtkStateFlags     state,
-                                      GParamSpec       *pspec,
-                                      GValue           *value)
-{
-  GtkStyleCascade *cascade = GTK_STYLE_CASCADE (provider);
-  GtkStyleCascadeIter iter;
-  GtkStyleProvider *item;
-
-  for (item = gtk_style_cascade_iter_init (cascade, &iter);
-       item;
-       item = gtk_style_cascade_iter_next (cascade, &iter))
-    {
-      if (gtk_style_provider_get_style_property (item,
-                                                 path,
-                                                 state,
-                                                 pspec,
-                                                 value))
-        {
-          gtk_style_cascade_iter_clear (&iter);
-          return TRUE;
-        }
-    }
-
-  gtk_style_cascade_iter_clear (&iter);
-  return FALSE;
-}
-
 static void
 gtk_style_cascade_provider_iface_init (GtkStyleProviderIface *iface)
 {
-  iface->get_style_property = gtk_style_cascade_get_style_property;
 }
 
 static GtkSettings *
diff --git a/gtk/gtkstylecontext.c b/gtk/gtkstylecontext.c
index 15157bd..c22c67b 100644
--- a/gtk/gtkstylecontext.c
+++ b/gtk/gtkstylecontext.c
@@ -1314,22 +1314,6 @@ gtk_style_context_list_classes (GtkStyleContext *context)
   return classes_list;
 }
 
-static gint
-style_property_values_cmp (gconstpointer bsearch_node1,
-                           gconstpointer bsearch_node2)
-{
-  const PropertyValue *val1 = bsearch_node1;
-  const PropertyValue *val2 = bsearch_node2;
-
-  if (val1->widget_type != val2->widget_type)
-    return val1->widget_type < val2->widget_type ? -1 : 1;
-
-  if (val1->pspec != val2->pspec)
-    return val1->pspec < val2->pspec ? -1 : 1;
-
-  return 0;
-}
-
 GtkCssValue *
 _gtk_style_context_peek_property (GtkStyleContext *context,
                                   guint            property_id)
@@ -1339,267 +1323,6 @@ _gtk_style_context_peek_property (GtkStyleContext *context,
   return gtk_css_style_get_value (values, property_id);
 }
 
-const GValue *
-_gtk_style_context_peek_style_property (GtkStyleContext *context,
-                                        GType            widget_type,
-                                        GParamSpec      *pspec)
-{
-  GtkStyleContextPrivate *priv;
-  GtkWidgetPath *path;
-  PropertyValue *pcache, key = { 0 };
-  guint i;
-
-  priv = context->priv;
-
-  /* ensure the style cache is valid by forcing a validation */
-  gtk_style_context_lookup_style (context);
-
-  key.widget_type = widget_type;
-  key.pspec = pspec;
-
-  /* need value cache array */
-  pcache = bsearch (&key,
-                    priv->property_cache->data, priv->property_cache->len,
-                    sizeof (PropertyValue), style_property_values_cmp);
-  if (pcache)
-    return &pcache->value;
-
-  i = 0;
-  while (i < priv->property_cache->len &&
-         style_property_values_cmp (&key, &g_array_index (priv->property_cache, PropertyValue, i)) >= 0)
-    i++;
-
-  g_array_insert_val (priv->property_cache, i, key);
-  pcache = &g_array_index (priv->property_cache, PropertyValue, i);
-
-  /* cache miss, initialize value type, then set contents */
-  g_param_spec_ref (pcache->pspec);
-  g_value_init (&pcache->value, G_PARAM_SPEC_VALUE_TYPE (pspec));
-
-  path = gtk_css_node_create_widget_path (gtk_style_context_get_root (context));
-  if (path && gtk_widget_path_length (path) > 0)
-    {
-      if (gtk_style_provider_get_style_property (GTK_STYLE_PROVIDER (priv->cascade),
-                                                 path,
-                                                 gtk_widget_path_iter_get_state (path, -1),
-                                                 pspec, &pcache->value))
-        {
-          gtk_widget_path_unref (path);
-
-          return &pcache->value;
-        }
-    }
-
-  gtk_widget_path_unref (path);
-
-  /* not supplied by any provider, revert to default */
-  g_param_value_set_default (pspec, &pcache->value);
-
-  return &pcache->value;
-}
-
-/**
- * gtk_style_context_get_style_property:
- * @context: a #GtkStyleContext
- * @property_name: the name of the widget style property
- * @value: Return location for the property value
- *
- * Gets the value for a widget style property.
- *
- * When @value is no longer needed, g_value_unset() must be called
- * to free any allocated memory.
- **/
-void
-gtk_style_context_get_style_property (GtkStyleContext *context,
-                                      const gchar     *property_name,
-                                      GValue          *value)
-{
-  GtkCssNode *root;
-  GtkWidgetClass *widget_class;
-  GParamSpec *pspec;
-  const GValue *peek_value;
-  GType widget_type;
-
-  g_return_if_fail (GTK_IS_STYLE_CONTEXT (context));
-  g_return_if_fail (property_name != NULL);
-  g_return_if_fail (value != NULL);
-
-  root = gtk_style_context_get_root (context);
-
-  if (GTK_IS_CSS_WIDGET_NODE (root))
-    {
-      GtkWidget *widget;
-
-      widget = gtk_css_widget_node_get_widget (GTK_CSS_WIDGET_NODE (root));
-      if (widget == NULL)
-        return;
-
-      widget_type = G_OBJECT_TYPE (widget);
-    }
-  else if (GTK_IS_CSS_PATH_NODE (root))
-    {
-      GtkWidgetPath *path;
-
-      path = gtk_css_path_node_get_widget_path (GTK_CSS_PATH_NODE (root));
-      if (path == NULL)
-        return;
-
-      widget_type = gtk_widget_path_get_object_type (path);
-
-      if (!g_type_is_a (widget_type, GTK_TYPE_WIDGET))
-        {
-          g_warning ("%s: can't get style properties for non-widget class '%s'",
-                     G_STRLOC,
-                     g_type_name (widget_type));
-          return;
-        }
-    }
-  else
-    {
-      return;
-    }
-
-  widget_class = g_type_class_ref (widget_type);
-  pspec = gtk_widget_class_find_style_property (widget_class, property_name);
-  g_type_class_unref (widget_class);
-
-  if (!pspec)
-    {
-      g_warning ("%s: widget class '%s' has no style property named '%s'",
-                 G_STRLOC,
-                 g_type_name (widget_type),
-                 property_name);
-      return;
-    }
-
-  peek_value = _gtk_style_context_peek_style_property (context, widget_type, pspec);
-
-  if (G_VALUE_TYPE (value) == G_VALUE_TYPE (peek_value))
-    g_value_copy (peek_value, value);
-  else if (g_value_type_transformable (G_VALUE_TYPE (peek_value), G_VALUE_TYPE (value)))
-    g_value_transform (peek_value, value);
-  else
-    g_warning ("can't retrieve style property '%s' of type '%s' as value of type '%s'",
-               pspec->name,
-               G_VALUE_TYPE_NAME (peek_value),
-               G_VALUE_TYPE_NAME (value));
-}
-
-/**
- * gtk_style_context_get_style_valist:
- * @context: a #GtkStyleContext
- * @args: va_list of property name/return location pairs, followed by %NULL
- *
- * Retrieves several widget style properties from @context according to the
- * current style.
- *
- * Since: 3.0
- **/
-void
-gtk_style_context_get_style_valist (GtkStyleContext *context,
-                                    va_list          args)
-{
-  GtkCssNode *root;
-  const gchar *prop_name;
-  GType widget_type;
-
-  g_return_if_fail (GTK_IS_STYLE_CONTEXT (context));
-
-  prop_name = va_arg (args, const gchar *);
-  root = gtk_style_context_get_root (context);
-
-  if (GTK_IS_CSS_WIDGET_NODE (root))
-    {
-      GtkWidget *widget;
-
-      widget = gtk_css_widget_node_get_widget (GTK_CSS_WIDGET_NODE (root));
-      if (widget == NULL)
-        return;
-
-      widget_type = G_OBJECT_TYPE (widget);
-    }
-  else if (GTK_IS_CSS_PATH_NODE (root))
-    {
-      GtkWidgetPath *path;
-
-      path = gtk_css_path_node_get_widget_path (GTK_CSS_PATH_NODE (root));
-      if (path == NULL)
-        return;
-
-      widget_type = gtk_widget_path_get_object_type (path);
-
-      if (!g_type_is_a (widget_type, GTK_TYPE_WIDGET))
-        {
-          g_warning ("%s: can't get style properties for non-widget class '%s'",
-                     G_STRLOC,
-                     g_type_name (widget_type));
-          return;
-        }
-    }
-  else
-    {
-      return;
-    }
-
-  while (prop_name)
-    {
-      GtkWidgetClass *widget_class;
-      GParamSpec *pspec;
-      const GValue *peek_value;
-      gchar *error;
-
-      widget_class = g_type_class_ref (widget_type);
-      pspec = gtk_widget_class_find_style_property (widget_class, prop_name);
-      g_type_class_unref (widget_class);
-
-      if (!pspec)
-        {
-          g_warning ("%s: widget class '%s' has no style property named '%s'",
-                     G_STRLOC,
-                     g_type_name (widget_type),
-                     prop_name);
-          break;
-        }
-
-      peek_value = _gtk_style_context_peek_style_property (context, widget_type, pspec);
-
-      G_VALUE_LCOPY (peek_value, args, 0, &error);
-
-      if (error)
-        {
-          g_warning ("can't retrieve style property '%s' of type '%s': %s",
-                     pspec->name,
-                     G_VALUE_TYPE_NAME (peek_value),
-                     error);
-          g_free (error);
-          break;
-        }
-
-      prop_name = va_arg (args, const gchar *);
-    }
-}
-
-/**
- * gtk_style_context_get_style:
- * @context: a #GtkStyleContext
- * @...: property name /return value pairs, followed by %NULL
- *
- * Retrieves several widget style properties from @context according to the
- * current style.
- *
- * Since: 3.0
- **/
-void
-gtk_style_context_get_style (GtkStyleContext *context,
-                             ...)
-{
-  va_list args;
-
-  va_start (args, context);
-  gtk_style_context_get_style_valist (context, args);
-  va_end (args);
-}
-
 /**
  * gtk_style_context_set_screen:
  * @context: a #GtkStyleContext
diff --git a/gtk/gtkstylecontext.h b/gtk/gtkstylecontext.h
index 59ff199..67d63d6 100644
--- a/gtk/gtkstylecontext.h
+++ b/gtk/gtkstylecontext.h
@@ -1049,17 +1049,6 @@ gboolean gtk_style_context_has_class    (GtkStyleContext *context,
                                          const gchar     *class_name);
 
 GDK_AVAILABLE_IN_ALL
-void gtk_style_context_get_style_property (GtkStyleContext *context,
-                                           const gchar     *property_name,
-                                           GValue          *value);
-GDK_AVAILABLE_IN_ALL
-void gtk_style_context_get_style_valist   (GtkStyleContext *context,
-                                           va_list          args);
-GDK_AVAILABLE_IN_ALL
-void gtk_style_context_get_style          (GtkStyleContext *context,
-                                           ...);
-
-GDK_AVAILABLE_IN_ALL
 void        gtk_style_context_set_screen (GtkStyleContext *context,
                                           GdkScreen       *screen);
 GDK_AVAILABLE_IN_ALL
diff --git a/gtk/gtkstyleprovider.c b/gtk/gtkstyleprovider.c
index a604340..2f5ddda 100644
--- a/gtk/gtkstyleprovider.c
+++ b/gtk/gtkstyleprovider.c
@@ -53,41 +53,3 @@ static void
 gtk_style_provider_iface_init (gpointer g_iface)
 {
 }
-
-/**
- * gtk_style_provider_get_style_property:
- * @provider: a #GtkStyleProvider
- * @path: #GtkWidgetPath to query
- * @state: state to query the style property for
- * @pspec: The #GParamSpec to query
- * @value: (out): return location for the property value
- *
- * Looks up a widget style property as defined by @provider for
- * the widget represented by @path.
- *
- * Returns: %TRUE if the property was found and has a value, %FALSE otherwise
- *
- * Since: 3.0
- **/
-gboolean
-gtk_style_provider_get_style_property (GtkStyleProvider *provider,
-                                       GtkWidgetPath    *path,
-                                       GtkStateFlags     state,
-                                       GParamSpec       *pspec,
-                                       GValue           *value)
-{
-  GtkStyleProviderIface *iface;
-
-  g_return_val_if_fail (GTK_IS_STYLE_PROVIDER (provider), FALSE);
-  g_return_val_if_fail (G_IS_PARAM_SPEC (pspec), FALSE);
-  g_return_val_if_fail (path != NULL, FALSE);
-  g_return_val_if_fail (g_type_is_a (gtk_widget_path_get_object_type (path), pspec->owner_type), FALSE);
-  g_return_val_if_fail (value != NULL, FALSE);
-
-  iface = GTK_STYLE_PROVIDER_GET_IFACE (provider);
-
-  if (!iface->get_style_property)
-    return FALSE;
-
-  return iface->get_style_property (provider, path, state, pspec, value);
-}
diff --git a/gtk/gtkstyleprovider.h b/gtk/gtkstyleprovider.h
index 730290f..38bcd3b 100644
--- a/gtk/gtkstyleprovider.h
+++ b/gtk/gtkstyleprovider.h
@@ -89,32 +89,16 @@ typedef struct _GtkStyleProvider GtkStyleProvider; /* dummy typedef */
 
 /**
  * GtkStyleProviderIface:
- * @get_style_property: Gets the value of a widget style property that applies to a widget path.
  */
 struct _GtkStyleProviderIface
 {
   /*< private >*/
   GTypeInterface g_iface;
-
-  /*< public >*/
-
-  gboolean (* get_style_property) (GtkStyleProvider *provider,
-                                   GtkWidgetPath    *path,
-                                   GtkStateFlags     state,
-                                   GParamSpec       *pspec,
-                                   GValue           *value);
 };
 
 GDK_AVAILABLE_IN_ALL
 GType gtk_style_provider_get_type (void) G_GNUC_CONST;
 
-GDK_AVAILABLE_IN_ALL
-gboolean gtk_style_provider_get_style_property (GtkStyleProvider *provider,
-                                                GtkWidgetPath    *path,
-                                                GtkStateFlags     state,
-                                                GParamSpec       *pspec,
-                                                GValue           *value);
-
 G_END_DECLS
 
 #endif /* __GTK_STYLE_PROVIDER_H__ */
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index d33f88b..558712f 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -259,22 +259,6 @@
  * If this has a value other than -1 you need to align the widget such that the baseline
  * appears at the position.
  *
- * # Style Properties
- *
- * #GtkWidget introduces “style
- * properties” - these are basically object properties that are stored
- * not on the object, but in the style object associated to the widget. Style
- * properties are set in [resource files][gtk3-Resource-Files].
- * This mechanism is used for configuring such things as the location of the
- * scrollbar arrows through the theme, giving theme authors more control over the
- * look of applications without the need to write a theme engine in C.
- *
- * Use gtk_widget_class_install_style_property() to install style properties for
- * a widget class, gtk_widget_class_find_style_property() or
- * gtk_widget_class_list_style_properties() to get information about existing
- * style properties and gtk_widget_style_get_property(), gtk_widget_style_get() or
- * gtk_widget_style_get_valist() to obtain the value of a style property.
- *
  * # GtkWidget as GtkBuildable
  *
  * The GtkWidget implementation of the GtkBuildable interface supports a
@@ -776,7 +760,6 @@ static gint             GtkWidget_private_offset = 0;
 static gpointer         gtk_widget_parent_class = NULL;
 static guint            widget_signals[LAST_SIGNAL] = { 0 };
 GtkTextDirection gtk_default_direction = GTK_TEXT_DIR_LTR;
-static GParamSpecPool  *style_property_spec_pool = NULL;
 
 static GQuark          quark_property_parser = 0;
 static GQuark          quark_accel_path = 0;
@@ -1016,7 +999,6 @@ gtk_widget_class_init (GtkWidgetClass *klass)
   quark_font_options = g_quark_from_static_string ("gtk-widget-font-options");
   quark_font_map = g_quark_from_static_string ("gtk-widget-font-map");
 
-  style_property_spec_pool = g_param_spec_pool_new (FALSE);
   _gtk_widget_child_property_pool = g_param_spec_pool_new (TRUE);
   cpn_context.quark_notify_queue = g_quark_from_static_string ("GtkWidget-child-property-notify-queue");
   cpn_context.dispatcher = child_property_notify_dispatcher;
@@ -3181,18 +3163,6 @@ gtk_widget_class_init (GtkWidgetClass *klass)
 static void
 gtk_widget_base_class_finalize (GtkWidgetClass *klass)
 {
-  GList *list, *node;
-
-  list = g_param_spec_pool_list_owned (style_property_spec_pool, G_OBJECT_CLASS_TYPE (klass));
-  for (node = list; node; node = node->next)
-    {
-      GParamSpec *pspec = node->data;
-
-      g_param_spec_pool_remove (style_property_spec_pool, pspec);
-      g_param_spec_unref (pspec);
-    }
-  g_list_free (list);
-
   template_data_free (klass->priv->template);
 }
 
@@ -11177,165 +11147,6 @@ gtk_widget_input_shape_combine_region (GtkWidget      *widget,
   gtk_widget_update_input_shape (widget);
 }
 
-
-/* style properties
- */
-static void
-gtk_widget_class_install_style_property_parser (GtkWidgetClass     *klass,
-                                               GParamSpec         *pspec,
-                                               GtkRcPropertyParser parser)
-{
-  g_return_if_fail (GTK_IS_WIDGET_CLASS (klass));
-  g_return_if_fail (G_IS_PARAM_SPEC (pspec));
-  g_return_if_fail (pspec->flags & G_PARAM_READABLE);
-  g_return_if_fail (!(pspec->flags & (G_PARAM_CONSTRUCT_ONLY | G_PARAM_CONSTRUCT)));
-
-  if (g_param_spec_pool_lookup (style_property_spec_pool, pspec->name, G_OBJECT_CLASS_TYPE (klass), FALSE))
-    {
-      g_warning (G_STRLOC ": class '%s' already contains a style property named '%s'",
-                G_OBJECT_CLASS_NAME (klass),
-                pspec->name);
-      return;
-    }
-
-  g_param_spec_ref_sink (pspec);
-  g_param_spec_set_qdata (pspec, quark_property_parser, (gpointer) parser);
-  g_param_spec_pool_insert (style_property_spec_pool, pspec, G_OBJECT_CLASS_TYPE (klass));
-}
-
-/**
- * gtk_widget_class_install_style_property:
- * @klass: a #GtkWidgetClass
- * @pspec: the #GParamSpec for the property
- *
- * Installs a style property on a widget class. The parser for the
- * style property is determined by the value type of @pspec.
- **/
-void
-gtk_widget_class_install_style_property (GtkWidgetClass *klass,
-                                        GParamSpec     *pspec)
-{
-  GtkRcPropertyParser parser;
-
-  g_return_if_fail (GTK_IS_WIDGET_CLASS (klass));
-  g_return_if_fail (G_IS_PARAM_SPEC (pspec));
-
-  parser = _gtk_rc_property_parser_from_type (G_PARAM_SPEC_VALUE_TYPE (pspec));
-
-  gtk_widget_class_install_style_property_parser (klass, pspec, parser);
-}
-
-/**
- * gtk_widget_class_find_style_property:
- * @klass: a #GtkWidgetClass
- * @property_name: the name of the style property to find
- *
- * Finds a style property of a widget class by name.
- *
- * Returns: (transfer none): the #GParamSpec of the style property or
- *   %NULL if @class has no style property with that name.
- *
- * Since: 2.2
- */
-GParamSpec*
-gtk_widget_class_find_style_property (GtkWidgetClass *klass,
-                                     const gchar    *property_name)
-{
-  g_return_val_if_fail (property_name != NULL, NULL);
-
-  return g_param_spec_pool_lookup (style_property_spec_pool,
-                                  property_name,
-                                  G_OBJECT_CLASS_TYPE (klass),
-                                  TRUE);
-}
-
-/**
- * gtk_widget_style_get_valist:
- * @widget: a #GtkWidget
- * @first_property_name: the name of the first property to get
- * @var_args: a va_list of pairs of property names and
- *     locations to return the property values, starting with the location
- *     for @first_property_name.
- *
- * Non-vararg variant of gtk_widget_style_get(). Used primarily by language
- * bindings.
- */
-void
-gtk_widget_style_get_valist (GtkWidget   *widget,
-                            const gchar *first_property_name,
-                            va_list      var_args)
-{
-  GtkStyleContext *context;
-  const gchar *name;
-
-  g_return_if_fail (GTK_IS_WIDGET (widget));
-
-  g_object_ref (widget);
-  context = _gtk_widget_get_style_context (widget);
-
-  name = first_property_name;
-  while (name)
-    {
-      const GValue *peek_value;
-      GParamSpec *pspec;
-      gchar *error;
-
-      pspec = g_param_spec_pool_lookup (style_property_spec_pool,
-                                       name,
-                                       G_OBJECT_TYPE (widget),
-                                       TRUE);
-      if (!pspec)
-       {
-         g_warning ("%s: widget class '%s' has no property named '%s'",
-                    G_STRLOC,
-                    G_OBJECT_TYPE_NAME (widget),
-                    name);
-         break;
-       }
-      /* style pspecs are always readable so we can spare that check here */
-
-      peek_value = _gtk_style_context_peek_style_property (context,
-                                                           G_OBJECT_TYPE (widget),
-                                                           pspec);
-
-      G_VALUE_LCOPY (peek_value, var_args, 0, &error);
-      if (error)
-       {
-         g_warning ("%s: %s", G_STRLOC, error);
-         g_free (error);
-         break;
-       }
-
-      name = va_arg (var_args, gchar*);
-    }
-
-  g_object_unref (widget);
-}
-
-/**
- * gtk_widget_style_get:
- * @widget: a #GtkWidget
- * @first_property_name: the name of the first property to get
- * @...: pairs of property names and locations to return the
- *     property values, starting with the location for
- *     @first_property_name, terminated by %NULL.
- *
- * Gets the values of a multiple style properties of @widget.
- */
-void
-gtk_widget_style_get (GtkWidget   *widget,
-                     const gchar *first_property_name,
-                     ...)
-{
-  va_list var_args;
-
-  g_return_if_fail (GTK_IS_WIDGET (widget));
-
-  va_start (var_args, first_property_name);
-  gtk_widget_style_get_valist (widget, first_property_name, var_args);
-  va_end (var_args);
-}
-
 /**
  * gtk_requisition_new:
  *
diff --git a/gtk/gtkwidget.h b/gtk/gtkwidget.h
index ce94238..48555ab 100644
--- a/gtk/gtkwidget.h
+++ b/gtk/gtkwidget.h
@@ -925,23 +925,6 @@ GDK_AVAILABLE_IN_ALL
 PangoLayout  *gtk_widget_create_pango_layout  (GtkWidget   *widget,
                                               const gchar *text);
 
-/* widget style properties
- */
-GDK_AVAILABLE_IN_ALL
-void gtk_widget_class_install_style_property        (GtkWidgetClass     *klass,
-                                                    GParamSpec         *pspec);
-GDK_AVAILABLE_IN_ALL
-GParamSpec*  gtk_widget_class_find_style_property   (GtkWidgetClass     *klass,
-                                                    const gchar        *property_name);
-GDK_AVAILABLE_IN_ALL
-void gtk_widget_style_get_valist   (GtkWidget       *widget,
-                                   const gchar    *first_property_name,
-                                   va_list         var_args);
-GDK_AVAILABLE_IN_ALL
-void gtk_widget_style_get          (GtkWidget       *widget,
-                                   const gchar    *first_property_name,
-                                   ...) G_GNUC_NULL_TERMINATED;
-
 /* Functions for setting directionality for widgets */
 
 GDK_AVAILABLE_IN_ALL
diff --git a/tests/testtreepos.c b/tests/testtreepos.c
index 4f1d1c7..2c8fd88 100644
--- a/tests/testtreepos.c
+++ b/tests/testtreepos.c
@@ -25,7 +25,7 @@ clicked_icon (GtkTreeView  *tv,
        */
       depth = gtk_tree_path_get_depth (*path);
       level_indentation = gtk_tree_view_get_level_indentation (tv);
-      gtk_widget_style_get (GTK_WIDGET (tv), "expander-size", &expander_size, NULL);
+      expander_size = 16; /* Hardcoded in gtktreeview.c */
       expander_size += 4;
       indent = (depth - 1) * level_indentation + depth * expander_size;
 #else


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]