#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 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);
}
return matcher->klass->has_position (matcher, forward, a, b);
}
+static inline gboolean
+_gtk_css_matcher_matches_any (const GtkCssMatcher *matcher)
+{
+ return matcher->klass->is_any;
+}
+
G_END_DECLS