cssmatcher: Change get_state to has_state
authorMatthias Clasen <mclasen@redhat.com>
Fri, 17 Jan 2020 00:23:45 +0000 (19:23 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 17 Jan 2020 00:24:43 +0000 (19:24 -0500)
This matches all the other vfuncs, and it gets us
out of keeping several big state flag enumerations
in sync.

Update all callers.

gtk/gtkcssmatcher.c
gtk/gtkcssmatcherprivate.h
gtk/gtkcssselector.c

index 1ceffa95da23e91403c5a05dd6a0e24172b9b11b..86e5540a47419bbc0a51ca715651c8998888734a 100644 (file)
@@ -72,19 +72,26 @@ gtk_css_matcher_widget_path_get_previous (GtkCssMatcher       *matcher,
   return TRUE;
 }
 
-static GtkStateFlags
-gtk_css_matcher_widget_path_get_state (const GtkCssMatcher *matcher)
+static gboolean
+gtk_css_matcher_widget_path_has_state (const GtkCssMatcher *matcher,
+                                       GtkStateFlags        state)
 {
-  const GtkWidgetPath *siblings;
+  GtkStateFlags path_state;
   
   if (matcher->path.decl)
-    return gtk_css_node_declaration_get_state (matcher->path.decl);
-
-  siblings = gtk_widget_path_iter_get_siblings (matcher->path.path, matcher->path.index);
-  if (siblings && matcher->path.sibling_index != gtk_widget_path_iter_get_sibling_index (matcher->path.path, matcher->path.index))
-    return gtk_widget_path_iter_get_state (siblings, matcher->path.sibling_index);
+    path_state = gtk_css_node_declaration_get_state (matcher->path.decl);
   else
-    return gtk_widget_path_iter_get_state (matcher->path.path, matcher->path.index);
+    {
+      const GtkWidgetPath *siblings;
+
+      siblings = gtk_widget_path_iter_get_siblings (matcher->path.path, matcher->path.index);
+      if (siblings && matcher->path.sibling_index != gtk_widget_path_iter_get_sibling_index (matcher->path.path, matcher->path.index))
+        path_state = gtk_widget_path_iter_get_state (siblings, matcher->path.sibling_index);
+      else
+        path_state = gtk_widget_path_iter_get_state (matcher->path.path, matcher->path.index);
+    }
+
+  return (path_state & state) == state;
 }
 
 static gboolean
@@ -186,7 +193,7 @@ static const GtkCssMatcherClass GTK_CSS_MATCHER_WIDGET_PATH = {
   GTK_CSS_MATCHER_TYPE_WIDGET_PATH,
   gtk_css_matcher_widget_path_get_parent,
   gtk_css_matcher_widget_path_get_previous,
-  gtk_css_matcher_widget_path_get_state,
+  gtk_css_matcher_widget_path_has_state,
   gtk_css_matcher_widget_path_has_name,
   gtk_css_matcher_widget_path_has_class,
   gtk_css_matcher_widget_path_has_id,
@@ -259,10 +266,11 @@ gtk_css_matcher_node_get_previous (GtkCssMatcher       *matcher,
   return gtk_css_node_init_matcher (node, matcher);
 }
 
-static GtkStateFlags
-gtk_css_matcher_node_get_state (const GtkCssMatcher *matcher)
+static gboolean
+gtk_css_matcher_node_has_state (const GtkCssMatcher *matcher,
+                                GtkStateFlags        state)
 {
-  return matcher->node.node_state;
+  return (matcher->node.node_state & state) == state;
 }
 
 static gboolean
@@ -370,7 +378,7 @@ static const GtkCssMatcherClass GTK_CSS_MATCHER_NODE = {
   GTK_CSS_MATCHER_TYPE_NODE,
   gtk_css_matcher_node_get_parent,
   gtk_css_matcher_node_get_previous,
-  gtk_css_matcher_node_get_state,
+  gtk_css_matcher_node_has_state,
   gtk_css_matcher_node_has_name,
   gtk_css_matcher_node_has_class,
   gtk_css_matcher_node_has_id,
@@ -411,25 +419,11 @@ gtk_css_matcher_any_get_previous (GtkCssMatcher       *matcher,
   return TRUE;
 }
 
-static GtkStateFlags
-gtk_css_matcher_any_get_state (const GtkCssMatcher *matcher)
+static gboolean
+gtk_css_matcher_any_has_state (const GtkCssMatcher *matcher,
+                               GtkStateFlags        state)
 {
-  /* XXX: This gets tricky when we implement :not() */
-
-  return GTK_STATE_FLAG_ACTIVE |
-         GTK_STATE_FLAG_PRELIGHT |
-         GTK_STATE_FLAG_SELECTED |
-         GTK_STATE_FLAG_INSENSITIVE |
-         GTK_STATE_FLAG_INCONSISTENT |
-         GTK_STATE_FLAG_FOCUSED |
-         GTK_STATE_FLAG_BACKDROP |
-         GTK_STATE_FLAG_DIR_LTR |
-         GTK_STATE_FLAG_DIR_RTL |
-         GTK_STATE_FLAG_LINK |
-         GTK_STATE_FLAG_VISITED |
-         GTK_STATE_FLAG_CHECKED |
-         GTK_STATE_FLAG_DROP_ACTIVE |
-         GTK_STATE_FLAG_FOCUS_VISIBLE;
+  return TRUE;
 }
 
 static gboolean
@@ -473,7 +467,7 @@ static const GtkCssMatcherClass GTK_CSS_MATCHER_ANY = {
   GTK_CSS_MATCHER_TYPE_ANY,
   gtk_css_matcher_any_get_parent,
   gtk_css_matcher_any_get_previous,
-  gtk_css_matcher_any_get_state,
+  gtk_css_matcher_any_has_state,
   gtk_css_matcher_any_has_name,
   gtk_css_matcher_any_has_class,
   gtk_css_matcher_any_has_id,
@@ -507,25 +501,11 @@ gtk_css_matcher_superset_get_previous (GtkCssMatcher       *matcher,
   return TRUE;
 }
 
-static GtkStateFlags
-gtk_css_matcher_superset_get_state (const GtkCssMatcher *matcher)
+static gboolean
+gtk_css_matcher_superset_has_state (const GtkCssMatcher *matcher,
+                                    GtkStateFlags        state)
 {
-  /* XXX: This gets tricky when we implement :not() */
-
-  return GTK_STATE_FLAG_ACTIVE |
-         GTK_STATE_FLAG_PRELIGHT |
-         GTK_STATE_FLAG_SELECTED |
-         GTK_STATE_FLAG_INSENSITIVE |
-         GTK_STATE_FLAG_INCONSISTENT |
-         GTK_STATE_FLAG_FOCUSED |
-         GTK_STATE_FLAG_BACKDROP |
-         GTK_STATE_FLAG_DIR_LTR |
-         GTK_STATE_FLAG_DIR_RTL |
-         GTK_STATE_FLAG_LINK |
-         GTK_STATE_FLAG_VISITED |
-         GTK_STATE_FLAG_CHECKED |
-         GTK_STATE_FLAG_DROP_ACTIVE |
-         GTK_STATE_FLAG_FOCUS_VISIBLE;
+  return TRUE;
 }
 
 static gboolean
@@ -571,7 +551,7 @@ static const GtkCssMatcherClass GTK_CSS_MATCHER_SUPERSET = {
   GTK_CSS_MATCHER_TYPE_SUPERSET,
   gtk_css_matcher_superset_get_parent,
   gtk_css_matcher_superset_get_previous,
-  gtk_css_matcher_superset_get_state,
+  gtk_css_matcher_superset_has_state,
   gtk_css_matcher_superset_has_name,
   gtk_css_matcher_superset_has_class,
   gtk_css_matcher_superset_has_id,
index 2e7f70a13106076630b34be1fd1bb5567c6a5125..094957bdaaaa8ea496e74c78005237e9957644e3 100644 (file)
@@ -43,7 +43,8 @@ struct _GtkCssMatcherClass {
   gboolean        (* get_previous)                (GtkCssMatcher          *matcher,
                                                    const GtkCssMatcher    *next);
 
-  GtkStateFlags   (* get_state)                   (const GtkCssMatcher   *matcher);
+  gboolean        (* has_state)                   (const GtkCssMatcher   *matcher,
+                                                   GtkStateFlags          state);
   gboolean        (* has_name)                    (const GtkCssMatcher   *matcher,
                                                    /*interned*/const char*name);
   gboolean        (* has_class)                   (const GtkCssMatcher   *matcher,
@@ -116,10 +117,11 @@ _gtk_css_matcher_get_previous (GtkCssMatcher       *matcher,
   return next->klass->get_previous (matcher, next);
 }
 
-static inline GtkStateFlags
-_gtk_css_matcher_get_state (const GtkCssMatcher *matcher)
+static inline gboolean
+_gtk_css_matcher_has_state (const GtkCssMatcher *matcher,
+                            GtkStateFlags        state)
 {
-  return matcher->klass->get_state (matcher);
+  return matcher->klass->has_state (matcher, state);
 }
 
 static inline gboolean
index e260cf159c2e4bfbbc1484a6db6758a25e16e77c..8957e494133e923be6c0054fb0f9dfb1db13ec9a 100644 (file)
@@ -711,7 +711,7 @@ static gboolean
 match_pseudoclass_state (const GtkCssSelector *selector,
                          const GtkCssMatcher  *matcher)
 {
-  return (_gtk_css_matcher_get_state (matcher) & selector->state.state) == selector->state.state;
+  return _gtk_css_matcher_has_state (matcher, selector->state.state);
 }
 
 static guint