diff --git a/gtk/gtkcssselector.c b/gtk/gtkcssselector.c index ca9c45dfb6..bfa8da034d 100644 --- a/gtk/gtkcssselector.c +++ b/gtk/gtkcssselector.c @@ -1111,7 +1111,8 @@ gtk_css_selector_pseudoclass_state_print (const GtkCssSelector *selector, "dir(ltr)", "dir(rtl)", "link", - "visited" + "visited", + "checked" }; guint i, state; @@ -1831,7 +1832,8 @@ parse_selector_pseudo_class (GtkCssParser *parser, { "dir(ltr)", GTK_STATE_FLAG_DIR_LTR, }, { "dir(rtl)", GTK_STATE_FLAG_DIR_RTL, }, { "link", GTK_STATE_FLAG_LINK, }, - { "visited", GTK_STATE_FLAG_VISITED, } + { "visited", GTK_STATE_FLAG_VISITED, }, + { "checked", GTK_STATE_FLAG_CHECKED, } }; guint i; diff --git a/gtk/gtkenums.h b/gtk/gtkenums.h index aa893d6b40..6322f126fa 100644 --- a/gtk/gtkenums.h +++ b/gtk/gtkenums.h @@ -856,6 +856,7 @@ typedef enum * @GTK_STATE_FLAG_DIR_RTL: Widget is in right-to-left text direction. Since 3.8 * @GTK_STATE_FLAG_LINK: Widget is a link. Since 3.12 * @GTK_STATE_FLAG_VISITED: The location the widget points to has already been visited. Since 3.12 + * @GTK_STATE_FLAG_CHECKED: Widget is checked. Since 3.14 * * Describes a widget state. Widget states are used to match the widget * against CSS pseudo-classes. Note that GTK extends the regular CSS @@ -874,7 +875,8 @@ typedef enum GTK_STATE_FLAG_DIR_LTR = 1 << 7, GTK_STATE_FLAG_DIR_RTL = 1 << 8, GTK_STATE_FLAG_LINK = 1 << 9, - GTK_STATE_FLAG_VISITED = 1 << 10 + GTK_STATE_FLAG_VISITED = 1 << 10, + GTK_STATE_FLAG_CHECKED = 1 << 11 } GtkStateFlags; /** diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index 83ff4fdfbb..d2cf6b1544 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -456,7 +456,7 @@ #define WIDGET_CLASS(w) GTK_WIDGET_GET_CLASS (w) -#define GTK_STATE_FLAGS_BITS 11 +#define GTK_STATE_FLAGS_BITS 12 typedef struct { gchar *name; /* Name of the template automatic child */ diff --git a/gtk/gtkwidgetpath.c b/gtk/gtkwidgetpath.c index aeb2980fe7..7d1019980b 100644 --- a/gtk/gtkwidgetpath.c +++ b/gtk/gtkwidgetpath.c @@ -333,18 +333,14 @@ gtk_widget_path_to_string (const GtkWidgetPath *path) { GFlagsClass *fclass; gint i; - gboolean appended; - appended = FALSE; fclass = g_type_class_ref (GTK_TYPE_STATE_FLAGS); for (i = 0; i < fclass->n_values; i++) { if (elem->state & fclass->values[i].value) { - if (appended) - g_string_append_c (string, ':'); + g_string_append_c (string, ':'); g_string_append (string, fclass->values[i].value_nick); - appended = TRUE; } } g_type_class_unref (fclass); diff --git a/testsuite/css/parser/pseudo-classes-known.css b/testsuite/css/parser/pseudo-classes-known.css index 363c7e06ff..53f8c71844 100644 --- a/testsuite/css/parser/pseudo-classes-known.css +++ b/testsuite/css/parser/pseudo-classes-known.css @@ -49,3 +49,7 @@ :visited { color: red; } + +:checked { + color: red; +} diff --git a/testsuite/css/parser/pseudo-classes-known.ref.css b/testsuite/css/parser/pseudo-classes-known.ref.css index 416411feb5..ee00699154 100644 --- a/testsuite/css/parser/pseudo-classes-known.ref.css +++ b/testsuite/css/parser/pseudo-classes-known.ref.css @@ -49,3 +49,7 @@ :visited { color: rgb(255,0,0); } + +:checked { + color: rgb(255,0,0); +}