#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;
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 {
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,
}
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);
}
}
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;
}