summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2015-12-27 17:24:25 -0500
committerMatthias Clasen <mclasen@redhat.com>2015-12-27 17:32:11 -0500
commitf3069d7e9465ada88033ebbeee7f91276a076d61 (patch)
tree831691c9f66da84563e9901fd7506695e9bac32d
parentc4ca671a9ee9f230837476e539ba7c737b3fcfb9 (diff)
downloadgtk+-f3069d7e9465ada88033ebbeee7f91276a076d61.tar.gz
css: Redo the pseudo class deprecation warnings
Putting the deprecated class behind the official variant does not work for the case of :focus and :focused - we were matching :focus and leave a dangling 'ed'. So, put the deprecated classes before the official variant, and explicitly mark them as deprecated.
-rw-r--r--gtk/gtkcssselector.c47
1 files changed, 24 insertions, 23 deletions
diff --git a/gtk/gtkcssselector.c b/gtk/gtkcssselector.c
index 924637b7bd..c4c29c1250 100644
--- a/gtk/gtkcssselector.c
+++ b/gtk/gtkcssselector.c
@@ -1167,32 +1167,33 @@ parse_selector_pseudo_class (GtkCssParser *parser,
{
static const struct {
const char *name;
+ gboolean deprecated;
GtkStateFlags state_flag;
PositionType position_type;
int position_a;
int position_b;
} pseudo_classes[] = {
- { "first-child", 0, POSITION_FORWARD, 0, 1 },
- { "last-child", 0, POSITION_BACKWARD, 0, 1 },
- { "only-child", 0, POSITION_ONLY, 0, 0 },
- { "sorted", 0, POSITION_SORTED, 0, 0 },
- { "active", GTK_STATE_FLAG_ACTIVE, },
- { "hover", GTK_STATE_FLAG_PRELIGHT, },
- { "prelight", GTK_STATE_FLAG_PRELIGHT, },
- { "selected", GTK_STATE_FLAG_SELECTED, },
- { "disabled", GTK_STATE_FLAG_INSENSITIVE, },
- { "insensitive", GTK_STATE_FLAG_INSENSITIVE, },
- { "indeterminate",GTK_STATE_FLAG_INCONSISTENT, },
- { "inconsistent", GTK_STATE_FLAG_INCONSISTENT, },
- { "focus", GTK_STATE_FLAG_FOCUSED, },
- { "focused", GTK_STATE_FLAG_FOCUSED, },
- { "backdrop", GTK_STATE_FLAG_BACKDROP, },
- { "dir(ltr)", GTK_STATE_FLAG_DIR_LTR, },
- { "dir(rtl)", GTK_STATE_FLAG_DIR_RTL, },
- { "link", GTK_STATE_FLAG_LINK, },
- { "visited", GTK_STATE_FLAG_VISITED, },
- { "checked", GTK_STATE_FLAG_CHECKED, },
- { "drop(active)", GTK_STATE_FLAG_DROP_ACTIVE, }
+ { "first-child", 0, 0, POSITION_FORWARD, 0, 1 },
+ { "last-child", 0, 0, POSITION_BACKWARD, 0, 1 },
+ { "only-child", 0, 0, POSITION_ONLY, 0, 0 },
+ { "sorted", 0, 0, POSITION_SORTED, 0, 0 },
+ { "active", 0, GTK_STATE_FLAG_ACTIVE, },
+ { "prelight", 1, GTK_STATE_FLAG_PRELIGHT, },
+ { "hover", 0, GTK_STATE_FLAG_PRELIGHT, },
+ { "selected", 0, GTK_STATE_FLAG_SELECTED, },
+ { "insensitive", 1, GTK_STATE_FLAG_INSENSITIVE, },
+ { "disabled", 0, GTK_STATE_FLAG_INSENSITIVE, },
+ { "inconsistent", 1, GTK_STATE_FLAG_INCONSISTENT, },
+ { "indeterminate", 0, GTK_STATE_FLAG_INCONSISTENT, },
+ { "focused", 1, GTK_STATE_FLAG_FOCUSED, },
+ { "focus", 0, GTK_STATE_FLAG_FOCUSED, },
+ { "backdrop", 0, GTK_STATE_FLAG_BACKDROP, },
+ { "dir(ltr)", 0, GTK_STATE_FLAG_DIR_LTR, },
+ { "dir(rtl)", 0, GTK_STATE_FLAG_DIR_RTL, },
+ { "link", 0, GTK_STATE_FLAG_LINK, },
+ { "visited", 0, GTK_STATE_FLAG_VISITED, },
+ { "checked", 0, GTK_STATE_FLAG_CHECKED, },
+ { "drop(active)", 0, GTK_STATE_FLAG_DROP_ACTIVE, }
};
guint i;
@@ -1212,13 +1213,13 @@ parse_selector_pseudo_class (GtkCssParser *parser,
: &GTK_CSS_SELECTOR_PSEUDOCLASS_STATE,
selector);
selector->state.state = pseudo_classes[i].state_flag;
- if (pseudo_classes[i].state_flag == pseudo_classes[i - 1].state_flag)
+ if (pseudo_classes[i].deprecated)
{
_gtk_css_parser_error_full (parser,
GTK_CSS_PROVIDER_ERROR_DEPRECATED,
"The :%s pseudo-class is deprecated. Use :%s instead.",
pseudo_classes[i].name,
- pseudo_classes[i - 1].name);
+ pseudo_classes[i + 1].name);
}
}
else