]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkcssmatcherprivate.h
filechooserbutton: When the combo box changes, set the *file*, not the current folder
[~andy/gtk] / gtk / gtkcssmatcherprivate.h
index 50412f4faac02dcf88eb221118f124738356cb49..1b2108c3870b5f9ef04c830f4eaa89c6a7b7766f 100644 (file)
 
 #include <gtk/gtkenums.h>
 #include <gtk/gtktypes.h>
+#include "gtk/gtkcsstypesprivate.h"
 
 G_BEGIN_DECLS
 
 typedef union _GtkCssMatcher GtkCssMatcher;
+typedef struct _GtkCssMatcherSuperset GtkCssMatcherSuperset;
 typedef struct _GtkCssMatcherWidgetPath GtkCssMatcherWidgetPath;
 typedef struct _GtkCssMatcherClass GtkCssMatcherClass;
 
@@ -34,18 +36,21 @@ struct _GtkCssMatcherClass {
                                                    const GtkCssMatcher    *next);
 
   GtkStateFlags   (* get_state)                   (const GtkCssMatcher   *matcher);
-  gboolean        (* has_name)                    (const GtkCssMatcher   *matcher,
-                                                   const char            *name);
+  gboolean        (* has_type)                    (const GtkCssMatcher   *matcher,
+                                                   GType                  type);
   gboolean        (* has_class)                   (const GtkCssMatcher   *matcher,
-                                                   const char            *class_name);
+                                                   GQuark                 class_name);
   gboolean        (* has_id)                      (const GtkCssMatcher   *matcher,
                                                    const char            *id);
   gboolean        (* has_regions)                 (const GtkCssMatcher   *matcher);
   gboolean        (* has_region)                  (const GtkCssMatcher   *matcher,
                                                    const char            *region,
                                                    GtkRegionFlags         flags);
-  guint           (* get_sibling_index)           (const GtkCssMatcher   *matcher);
-  guint           (* get_n_siblings)              (const GtkCssMatcher   *matcher);
+  gboolean        (* has_position)                (const GtkCssMatcher   *matcher,
+                                                   gboolean               forward,
+                                                   int                    a,
+                                                   int                    b);
+  gboolean is_any;
 };
 
 struct _GtkCssMatcherWidgetPath {
@@ -56,14 +61,26 @@ struct _GtkCssMatcherWidgetPath {
   guint                     sibling_index;
 };
 
+struct _GtkCssMatcherSuperset {
+  const GtkCssMatcherClass *klass;
+  const GtkCssMatcher      *subset;
+  GtkCssChange              relevant;
+};
+
 union _GtkCssMatcher {
   const GtkCssMatcherClass *klass;
   GtkCssMatcherWidgetPath   path;
+  GtkCssMatcherSuperset     superset;
 };
 
-void              _gtk_css_matcher_init           (GtkCssMatcher          *matcher,
+gboolean          _gtk_css_matcher_init           (GtkCssMatcher          *matcher,
                                                    const GtkWidgetPath    *path,
-                                                   GtkStateFlags           state);
+                                                   GtkStateFlags           state) G_GNUC_WARN_UNUSED_RESULT;
+void              _gtk_css_matcher_any_init       (GtkCssMatcher          *matcher);
+void              _gtk_css_matcher_superset_init  (GtkCssMatcher          *matcher,
+                                                   const GtkCssMatcher    *subset,
+                                                   GtkCssChange            relevant);
+
 
 static inline gboolean
 _gtk_css_matcher_get_parent (GtkCssMatcher       *matcher,
@@ -86,15 +103,15 @@ _gtk_css_matcher_get_state (const GtkCssMatcher *matcher)
 }
 
 static inline gboolean
-_gtk_css_matcher_has_name (const GtkCssMatcher *matcher,
-                           const char          *name)
+_gtk_css_matcher_has_type (const GtkCssMatcher *matcher,
+                           GType type)
 {
-  return matcher->klass->has_name (matcher, name);
+  return matcher->klass->has_type (matcher, type);
 }
 
 static inline gboolean
 _gtk_css_matcher_has_class (const GtkCssMatcher *matcher,
-                            const char          *class_name)
+                            GQuark               class_name)
 {
   return matcher->klass->has_class (matcher, class_name);
 }
@@ -122,15 +139,18 @@ _gtk_css_matcher_has_region (const GtkCssMatcher *matcher,
 }
 
 static inline guint
-_gtk_css_matcher_get_sibling_index (const GtkCssMatcher *matcher)
+_gtk_css_matcher_has_position (const GtkCssMatcher *matcher,
+                               gboolean             forward,
+                               int                  a,
+                               int                  b)
 {
-  return matcher->klass->get_sibling_index (matcher);
+  return matcher->klass->has_position (matcher, forward, a, b);
 }
 
-static inline guint
-_gtk_css_matcher_get_n_siblings (const GtkCssMatcher *matcher)
+static inline gboolean
+_gtk_css_matcher_matches_any (const GtkCssMatcher *matcher)
 {
-  return matcher->klass->get_n_siblings (matcher);
+  return matcher->klass->is_any;
 }