X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=gtk%2Fgtkcssstylepropertyimpl.c;h=26726d73d7a5f7850445699b45dedad96570644d;hb=ca2368dba958d6fecf2fce417307bb9cbbe6eb6b;hp=e1e19b274283191bddc28668c1f98999bd951581;hpb=0c12a6ffcb2d86d8ea23f4fa65ea3220ff7206b3;p=~andy%2Fgtk diff --git a/gtk/gtkcssstylepropertyimpl.c b/gtk/gtkcssstylepropertyimpl.c index e1e19b274..26726d73d 100644 --- a/gtk/gtkcssstylepropertyimpl.c +++ b/gtk/gtkcssstylepropertyimpl.c @@ -66,7 +66,8 @@ typedef enum { GTK_STYLE_PROPERTY_INHERIT = (1 << 0), GTK_STYLE_PROPERTY_ANIMATED = (1 << 1), - GTK_STYLE_PROPERTY_NO_RESIZE = (1 << 2) + GTK_STYLE_PROPERTY_NO_RESIZE = (1 << 2), + GTK_STYLE_PROPERTY_AFFECTS_FONT = (1 << 3) } GtkStylePropertyFlags; static void @@ -89,6 +90,7 @@ gtk_css_style_property_register (const char * name, node = g_object_new (GTK_TYPE_CSS_STYLE_PROPERTY, "value-type", value_type, "affects-size", (flags & GTK_STYLE_PROPERTY_NO_RESIZE) ? FALSE : TRUE, + "affects-font", (flags & GTK_STYLE_PROPERTY_AFFECTS_FONT) ? TRUE : FALSE, "animated", (flags & GTK_STYLE_PROPERTY_ANIMATED) ? TRUE : FALSE, "inherit", (flags & GTK_STYLE_PROPERTY_INHERIT) ? TRUE : FALSE, "initial-value", initial_value, @@ -418,6 +420,14 @@ parse_css_direction (GtkCssStyleProperty *property, return _gtk_css_array_value_parse (parser, parse_one_css_direction); } +static GtkCssValue * +opacity_parse (GtkCssStyleProperty *property, + GtkCssParser *parser) +{ + return _gtk_css_number_value_parse (parser, GTK_CSS_PARSE_NUMBER); +} + + static GtkCssValue * parse_one_css_play_state (GtkCssParser *parser) { @@ -648,15 +658,17 @@ static GtkCssValue * font_size_parse (GtkCssStyleProperty *property, GtkCssParser *parser) { - gdouble d; + GtkCssValue *value; - if (!_gtk_css_parser_try_double (parser, &d)) - { - _gtk_css_parser_error (parser, "Expected a number"); - return NULL; - } + value = _gtk_css_font_size_value_try_parse (parser); + if (value) + return value; - return _gtk_css_number_value_new (d, GTK_CSS_PX); + return _gtk_css_number_value_parse (parser, + GTK_CSS_PARSE_LENGTH + | GTK_CSS_PARSE_PERCENT + | GTK_CSS_POSITIVE_ONLY + | GTK_CSS_NUMBER_AS_PIXELS); } static GtkCssValue * @@ -874,12 +886,11 @@ _gtk_css_style_property_init_properties (void) gtk_css_style_property_register ("font-size", GTK_CSS_PROPERTY_FONT_SIZE, G_TYPE_DOUBLE, - GTK_STYLE_PROPERTY_INHERIT | GTK_STYLE_PROPERTY_ANIMATED, + GTK_STYLE_PROPERTY_INHERIT | GTK_STYLE_PROPERTY_ANIMATED | GTK_STYLE_PROPERTY_AFFECTS_FONT, font_size_parse, query_length_as_double, assign_length_from_double, - /* XXX: This should be 'normal' */ - _gtk_css_number_value_new (10.0, GTK_CSS_PX)); + _gtk_css_font_size_value_new (GTK_CSS_FONT_SIZE_MEDIUM)); /* properties that aren't referenced when computing values * start here */ @@ -895,7 +906,7 @@ _gtk_css_style_property_init_properties (void) gtk_css_style_property_register ("font-family", GTK_CSS_PROPERTY_FONT_FAMILY, G_TYPE_STRV, - GTK_STYLE_PROPERTY_INHERIT, + GTK_STYLE_PROPERTY_INHERIT | GTK_STYLE_PROPERTY_AFFECTS_FONT, font_family_parse, font_family_query, font_family_assign, @@ -903,7 +914,7 @@ _gtk_css_style_property_init_properties (void) gtk_css_style_property_register ("font-style", GTK_CSS_PROPERTY_FONT_STYLE, PANGO_TYPE_STYLE, - GTK_STYLE_PROPERTY_INHERIT, + GTK_STYLE_PROPERTY_INHERIT | GTK_STYLE_PROPERTY_AFFECTS_FONT, parse_pango_style, query_pango_style, assign_pango_style, @@ -911,7 +922,7 @@ _gtk_css_style_property_init_properties (void) gtk_css_style_property_register ("font-variant", GTK_CSS_PROPERTY_FONT_VARIANT, PANGO_TYPE_VARIANT, - GTK_STYLE_PROPERTY_INHERIT, + GTK_STYLE_PROPERTY_INHERIT | GTK_STYLE_PROPERTY_AFFECTS_FONT, parse_pango_variant, query_pango_variant, assign_pango_variant, @@ -919,7 +930,7 @@ _gtk_css_style_property_init_properties (void) gtk_css_style_property_register ("font-weight", GTK_CSS_PROPERTY_FONT_WEIGHT, PANGO_TYPE_WEIGHT, - GTK_STYLE_PROPERTY_INHERIT, + GTK_STYLE_PROPERTY_INHERIT | GTK_STYLE_PROPERTY_AFFECTS_FONT, parse_pango_weight, query_pango_weight, assign_pango_weight, @@ -1379,6 +1390,14 @@ _gtk_css_style_property_init_properties (void) NULL, NULL, _gtk_css_array_value_new (_gtk_css_fill_mode_value_new (GTK_CSS_FILL_NONE))); + gtk_css_style_property_register ("opacity", + GTK_CSS_PROPERTY_OPACITY, + G_TYPE_NONE, + GTK_STYLE_PROPERTY_ANIMATED | GTK_STYLE_PROPERTY_NO_RESIZE, + opacity_parse, + NULL, + NULL, + _gtk_css_number_value_new (1, GTK_CSS_NUMBER)); gtk_css_style_property_register ("engine", GTK_CSS_PROPERTY_ENGINE,