Alexandr Miloslavskiy
fd1630e049
Fix crash in parse_border()
...
The bug was introduced in commit:
9b7640b8
by Benjamin Otte, 2012-03-26 17:24:02
styleproperty: Make _gtk_style_property_parse_value() return a CssValue
In that commit, `values` changed from `GValue*` to `GtkCssValue**`,
but one `!G_IS_VALUE (&values[8])` was left untouched. As a result,
if `border` shorthand contains anything after color, it might crash,
depending on memory layout.
New test included.
Fixes : #751
2019-11-23 18:15:19 +01:00
Matthias Clasen
1c9a486d60
css: Use multiple font-family values
...
Pango API to support this, so we can implement
this very easily.
Closes: https://gitlab.gnome.org/GNOME/gtk/issues/1854
2019-05-03 01:44:02 +00:00
Benjamin Otte
1cd9396154
css: Review error messages
...
... and move them from _gtk_css_parser_error() to the proper new error
message.
2019-04-12 19:34:28 +02:00
Benjamin Otte
de73ac980f
css: Use gtk_css_parser_consume_any() for transition shorthand
2019-04-12 19:34:28 +02:00
Benjamin Otte
5f3e5a0406
cssparser: Add gtk_css_parser_try_delim()
...
For parsing single code point delimiters. Also port calc() to use this.
2019-04-12 19:34:28 +02:00
Benjamin Otte
dce8c11b07
cssparser: Drop _gtk_css_parser_has_prefix()
...
Replace it with has_ident/has_function. The old function is a typical
string matching API, not a tokenizing one.
2019-04-12 19:34:28 +02:00
Benjamin Otte
7ccec19501
parser: Get rid of _gtk_css_parser_is_eof()
...
Use gtk_css_parser_has_token() instead.
2019-04-12 19:34:28 +02:00
Benjamin Otte
93b643c44d
css: Make font-weight an integer
...
This conforms to what Pango does and to the CSS4 spec. And it makes the
parsing code easier. So let's go for it.
2019-04-12 19:34:28 +02:00
Benjamin Otte
3fb44ae651
cssparser: Add gtk_css_parser_try_token()
2019-04-12 19:34:28 +02:00
Benjamin Otte
76fb80f46c
cssparser: Introduce gtk_css_parser_try_ident()
...
... and gtk_css_parser_has_function().
2019-04-12 19:34:28 +02:00
Benjamin Otte
684b6459f1
cssparser: Get rid of _gtk_css_parser_begins_with()
...
Replace it with calls to gtk_css_parser_has_token().
2019-04-12 19:34:28 +02:00
Benjamin Otte
3ca59b8701
css: Don't do indirections
...
We don't need to look up the property by name to query its ID when we
know the ID already because it's inside an enum.
2018-07-04 06:15:33 +02:00
Benjamin Otte
fba0b359d4
css: Report sizes as absolute
...
All PangoFontDescriptions that GTK creates now use
pango_font_description_set_absolute_size().
2018-07-04 06:15:33 +02:00
Matthias Clasen
d005109133
Drop unused gtkcssstylefuncs.c
...
Clean up all the places where the header was still
included needlessly.
2017-11-30 18:46:54 -05:00
Matthias Clasen
6859f0a6d1
css: Use enums instead of idents for font-variant properties
...
As Benjamin says, ident should only be used if any value
is valid, which is not the case here. So use enums instead,
which should also be more efficient. To handle the more
complicated cases like font-variant-ligatures, we have to
introduce flags-like values.
2017-09-18 23:22:38 -04:00
Matthias Clasen
f87dc24867
Fix a typo
...
The property is called font-variant-alternates, not -alternatives.
Correct this everywhere.
2017-09-18 18:10:08 -04:00
Matthias Clasen
92398bb1bb
css: implement font-variant as a shorthand
...
Drop the current css2-style font-variant property and
replace it with a shorthand as specified in the css3 fonts
module. Currently, we fully support the font-variant-ligatures,
font-variant-position, font-variant-caps, font-variant-numeric
and font-variant-east-asian subproperties. font-variant-alternatives
is only partially supported.
2017-09-18 14:27:06 -04:00
Matthias Clasen
d0cae3ecba
Fix the -gtk-outline-radius shorthand
...
It needs to refer to the -gtk-prefixed subproperties now.
2017-09-17 21:17:30 -04:00
Matthias Clasen
de3179e7c0
Drop aliases for outline radius
...
The outline-{top,bottom}-{left,right}-radius names have been
deprecated for a while, so lets remove them. Everybody should
just use the -gtk-prefixed names for these properties.
2017-09-17 16:57:53 -04:00
Matthias Clasen
737cae8e10
Drop support for pango syntax in css
...
This has been deprecated for a while, so it should go away
for GTK+ 4.
2017-09-17 16:52:55 -04:00
Benjamin Otte
fb47a8d714
css: Remove deprecated number-as-pixels compatibility
...
Previously, for compatibility with GTK 3.0, we allowed specifying
numbers without units and interpreted them as pixels, even when the CSS
specification didn't.
Remove that now that we can break API.
2017-01-18 04:13:56 +01:00
Benjamin Otte
dd83f9ca86
API: Remove API to set CSS properties from GValues
...
This API was only used in GtkModifierStyle and GtkStyleProperties and
they are both on their way out.
CSS properties must now be set using strings via the regular parser API.
2016-10-16 18:17:21 +02:00
Benjamin Otte
5ccc0e40f5
css: Fix case where we didn't convert pt => px
...
Fixes gtk_widget_override_font() not behaving properly since commit
df08fc91bd
.
https://bugzilla.gnome.org/show_bug.cgi?id=768902
2016-07-28 11:42:54 -04:00
Matthias Clasen
2603011ea0
Fix a typo
...
We don't want to parse a weight twice, but a weight and a stretch.
2016-04-18 14:38:12 -04:00
Matthias Clasen
68ce676498
Add backwards compat back
...
Apparently, there's lots of font: "pango font description" out there,
so keep parsing this, with a deprecation warning.
2016-04-18 14:09:41 -04:00
Matthias Clasen
dcd20e17e5
Fix parsing of the font: shorthand
...
Our code here was just throwing it at PangoFontDescription.
Fix this by parsing the various components ourselves.
2016-04-18 11:46:58 -04:00
Matt Watson
df08fc91bd
css: always get default font size in pixels
...
Fixes a couple bugs...
- Pixel font sizes in css would render as point sizes.
- For em font sizes, where the parent size was set and not default, we would
incorrectly convert a pixel value from points to pixels.
We'll always grab the default font size in pixels so we don't keep confusing
things.
Worth noting that gtk css font-size will still behave differently than the
web. Pango interprets font-size differently.
2016-04-12 16:58:55 -07:00
Benjamin Otte
a52ecd2be6
css: Add gtk_css_number_value_can_parse()
...
Use it instead of _gtk_css_parser_has_number().
We need that once we introduce calc() support.
2016-02-13 04:49:08 +01:00
Benjamin Otte
e2d966eda5
cssnumbervalue: Remove gtk_css_number_value_get_unit()
...
This is in preparation for calc(), as calc(50% - 5px) is valid CSS
but has 2 units. Instead, add a function to query a value's dimension
(so we can differentiate lengths from numbers) and add a function to
query if the value contains percentages.
2016-02-13 04:49:07 +01:00
Matthias Clasen
6b497bcf81
Trivial changes
2015-12-22 22:29:22 -05:00
Matthias Clasen
f61b7ba797
Prefix outline radius CSS properties
...
These are not in any CSS specifications, so mark them as GTK+
additions by giving them a -gtk prefix. The old names still work.
2015-12-22 16:18:10 -05:00
Paolo Borelli
1eb1481bdf
css: support text-decoration-style
...
The support is limited to underline single, double and wavy, which
is what pango has today.
2015-07-06 20:06:20 +02:00
Paolo Borelli
180a378a07
css: add shorthand text-decoration property
...
Note that for now we take into account only text-decoration-line
and text-decoration-color
2015-07-06 00:04:06 +02:00
Matthias Clasen
385e6beafe
Fix the build
...
Some forgotten include path adjustments.
2014-10-24 16:12:33 -04:00
Emmanuele Bassi
5ad60caa3c
css: Implement font-stretch
...
The font-stretch CSS property is defined in the Level 3 CSS Fonts
module, available at:
http://dev.w3.org/csswg/css-fonts/#propdef-font-stretch
It allows defining a normal, condensed, or expanded face to the font
description. Pango already supports it, so this is literally just the
CSS parser machinery needed to bridge our CSS to the FontDescription
API.
https://bugzilla.gnome.org/show_bug.cgi?id=735593
2014-08-28 13:41:40 +01:00
Benjamin Otte
d6e9997619
css: Fail animation shorthand parsing properly
...
When a number is not a nubmer, don't just crash, exit properly with an
error code.
See attached testcase for an example.
2014-07-31 10:03:19 +02:00
Benjamin Otte
5f5d3a9d82
css: Don't infloop when parsing broken borders
...
There was an infinite loop when parsing invalid text after having parsed
a color in the border shorthand. See attached testcase for an example.
2014-07-31 10:03:18 +02:00
Benjamin Otte
871d782e74
css: Don't special-case fill-mode in 'animation'
...
I have no idea why it was special cased when parsing the 'animation'
shorthand, but it caused crashes.
So remove the special case.
2014-07-07 14:26:05 +02:00
Benjamin Otte
0e462f0d2d
css: Implement "all" shorthand
...
Here's the spec:
http://dev.w3.org/csswg/css-cascade/#all-shorthand
Also use it in the reset-to-defaults CSS where a bunch of properties had
been missing.
2014-05-11 03:23:55 +02:00
Cosimo Cecchi
e8cbbedbb2
css: add properties for outline-radius
...
Both a shorthand and individual properties. This is not officially part
of the CSS standard, but there's precedence for it at least in Mozilla:
https://developer.mozilla.org/en-US/docs/Web/CSS/-moz-outline-radius
2014-05-01 18:14:49 +02:00
Matthias Clasen
b3b83545c4
Don't return prematurely
...
This code was clearly meant to return _after_ the loop.
Don't put the return inside the loop body, then.
2012-11-29 23:10:35 -05:00
Benjamin Otte
bd31bd6d63
cssstyleproperty: Replace symbolic colors with GtkCssColorValue
2012-11-08 23:34:29 +01:00
Matthias Clasen
4e09e180e4
Fix css parser tests
...
Parsing a shorthand background property was running into unexpected
errors when trying position values where there were none. To fix this,
introduce a try_parse variant of the position parse function that
silently returns NULL.
2012-10-16 06:02:03 -04:00
Benjamin Otte
854585e770
css: Implement 'animation' shorthand parsing
2012-09-17 20:39:11 +02:00
Cosimo Cecchi
61c7014e3e
shorthand: implement multiple backgrounds for the background shorthand
2012-05-15 13:24:40 -04:00
Cosimo Cecchi
a17c69cc03
shorthand: add background-position and background-size to bg shorthand
2012-05-15 13:24:40 -04:00
Cosimo Cecchi
cfc5854068
shorthand: use array values for shorthand properties parsing
...
Right now, just parse the first value in the array.
2012-05-15 13:24:40 -04:00
Benjamin Otte
cc6c7c5e16
cssshorthand: Don't pass base file anymore
...
It's part of the parser now.
2012-05-11 16:42:12 +02:00
Benjamin Otte
c9f01ffb43
cssimage: No need to pass base file anymore
...
The file is now part of the GtkCssParser
2012-05-11 16:42:12 +02:00
Benjamin Otte
ba7141b92e
shorthand: Fix border query functions
...
We haven't been using ints there for a while, I wonder why that never
blew up...
2012-04-17 08:59:20 +02:00