William Jon McCann
a479ee5de5
docs: use markdown for <envar> tags
2014-02-04 16:58:53 -05:00
Matthias Clasen
09d1b28249
docs: Convert to markdown
...
Specifically, switch to using markdown syntax for sections.
2014-02-02 00:30:27 -05:00
William Jon McCann
e31ebda1d7
docs: don't escape entities in example code
...
https://bugzilla.gnome.org/show_bug.cgi?id=723119
2014-01-29 12:45:49 -05:00
William Jon McCann
768bc44081
docs: use |[ ]| instead of <programlisting></programlisting>
...
https://bugzilla.gnome.org/show_bug.cgi?id=723119
2014-01-29 12:45:49 -05:00
William Jon McCann
5d053e03a9
docs: fix css properties table
2014-01-28 01:27:39 -05:00
William Jon McCann
974e930fb8
Use a define for the default theme name
2014-01-24 08:08:34 -05:00
William Jon McCann
4a11acdc8c
resources: move resources into a subdirectory
2014-01-23 21:04:59 -05:00
Emmanuele Bassi
0899ef7cc9
gtk: Use new macros for defining private data
...
https://bugzilla.gnome.org/show_bug.cgi?id=702996
2013-07-09 09:30:02 +01:00
P. F. Chimento
29c7562ca7
doc: Documented icon-shadow CSS property
...
The docs say that text-shadow applies a drop shadow to both text
and icons, but icons need to use the icon-shadow property.
https://bugzilla.gnome.org/show_bug.cgi?id=698181
2013-04-19 10:19:25 -04:00
Chris Cummins
e707eadaf2
Update GtkCssProvider box-shadow documentation
...
Non-inset box-shadows are no longer ignored by the GTK+ theming engine,
outset shadows are supported.
Signed-off-by: Rob Bradford <rob@linux.intel.com>
2013-04-09 12:52:52 +01:00
Alexander Larsson
eb4667b6e1
css: Do get_change directly on the tree without matching first
...
Rather than first collecting matches and then getting the change
for them we do the change collection directly on the tree. This
is about twice as fast.
2012-12-10 12:11:02 +01:00
Alexander Larsson
d69c6fff7a
css: Don't keep around linear selectors
...
Now we use the selector tree everywhere, so there is no need to
keep around the linear selectors unless we're using them to
verify the tree correctness, so free them.
2012-11-30 14:53:30 +01:00
Alexander Larsson
c10a0962cf
css: Remove gtk_css_ruleset_matches
...
This is only not needed anymore, and only the VERIFY_TREE code
should access ->selector.
2012-11-30 14:53:30 +01:00
Alexander Larsson
fd4712590a
css: Use tree for gtk_css_provider_get_style_property
2012-11-30 14:53:30 +01:00
Alexander Larsson
9b989a1427
css: Implement ruleset_get_change() with the tree
...
We traverse the tree on the matches instead of using
the linear selectors.
2012-11-30 14:53:30 +01:00
Alexander Larsson
3d5e8f98ec
css: Use the tree to print css selectors
2012-11-30 14:53:30 +01:00
Alexander Larsson
6bec577771
css: Track the tree selector matches
2012-11-30 14:53:30 +01:00
Alexander Larsson
69feabd139
css: Better tree match verification
2012-11-30 14:53:30 +01:00
Alexander Larsson
1bfa6593c8
css: Create and use a tree for css selector matching
2012-11-30 14:53:30 +01:00
Benjamin Otte
42dc0ea0fd
styleprovider: Change function prototype
...
Make _gtk_style_provider_private_get_color() return a GtkCssValue (a
GtkCssColorValue to be exact) instead of GtkSymbolicColor.
With this, the symbolic color usage inside GTK is minimized.
2012-11-25 02:45:10 +01:00
Benjamin Otte
94b80cc774
symboliccolor: Change prototype of function
...
Makes it easier to use the function in the places where it's still used.
2012-11-24 21:56:47 +01:00
Benjamin Otte
932794e105
styleprovider: Remove (broken) implementations of get_style
...
The implementations were broken and get_style() is deprecated and
documented to return NULL now.
2012-11-24 21:12:00 +01:00
Benjamin Otte
4bc264a514
cssprovider: Handle non-existing section
...
Otherwise we'll get warnings on errors when CSS debug is disabled.
2012-11-15 19:25:14 +01:00
Alexander Larsson
1c4158a649
gtk_css_style_provider_lookup: minor loop optimiziation
...
This is a minor performance improvement but this loop
is run a lot so it actually matters in large state
changes.
2012-11-09 10:16:18 +01:00
Alexander Larsson
55d65571f3
Exit early in gtk_style_context_update_cache codepaths
...
If lookup->missing is empty we don't need to continue looking.
We short circuit in several places as this can happen
after iteratively makeign lookup->missing smaller.
2012-11-09 10:15:23 +01:00
Benjamin Otte
b41215bdea
cssprovider: Move fallback code into _gtk_css_provider_load_named()
...
This makes sure the full theme loading logic resides in one function and
isn't scattered around.
As a side-effect, the hash table kept by gtk_css_provider_get_named()
will now be populated with fallback themes. This will not be a problem
after the next commit though.
2012-10-31 11:09:09 +01:00
Benjamin Otte
738b453c66
cssprovider: Export gtk_css_provider_load_named) function
...
... and document it.
For now, the function is only exported internally.
2012-10-31 11:09:09 +01:00
Benjamin Otte
9c9d82f1a9
cssprovider: Split out theme loading function
...
Split maintaining the global themes hash table and the theme loading
code into two functions.
This also fixes leaking the provider when loading a theme from a builtin
resource.
2012-10-31 11:09:09 +01:00
Benjamin Otte
5e1ae36b2f
section: Add _gtk_css_section_to_string()
...
Mostly for debugging pruposes, but use it for printing CSS errors in
GtkCssProvider, too.
2012-09-28 18:27:49 +02:00
Benjamin Otte
6696aa2128
cssprovider: Remove another path that can't be reached
...
... because the return value of a function is always TRUE.
2012-09-19 15:32:38 +02:00
Benjamin Otte
697ed544dd
docs: Clarify GtkCssProvider loading return values
2012-09-19 15:30:21 +02:00
Benjamin Otte
ee91f22086
cssprovider: Get rid of return value
...
... that is always TRUE.
2012-09-19 15:18:51 +02:00
Matthias Clasen
ab3d6a0b0a
Revert "Bind the themes to the livecycle of the screen"
...
This reverts commit 1f5dea9eba
,
since it was causeing noticable behaviour changes.
Previously, GTK_DATA_PREFIX=/ ./gtk3-demo would start
gtk3-demo with the Raleigh theme. With that change, it
was starting with no theme at all (i.e. all black).
2012-09-17 22:31:25 -04:00
Benjamin Otte
e6c951a303
styleprovider: Add query function for keyframes
2012-09-17 20:39:11 +02:00
Benjamin Otte
c4cdb33b32
cssprovider: Add parsing support for @keyframes
2012-09-17 20:39:10 +02:00
William Jon McCann
b05224b059
Add back gtk_css_provider_get_named
...
Was in the original patch but was not in 1f5dea9
probably due to
a bad rebase.
https://bugzilla.gnome.org/show_bug.cgi?id=683896
2012-09-17 09:54:26 -04:00
William Jon McCann
1f5dea9eba
Bind the themes to the lifecycle of the screen
...
https://bugzilla.gnome.org/show_bug.cgi?id=683896
2012-09-16 20:20:44 -04:00
Benjamin Otte
6dc3113edc
cssstyleproperty: Get rid of unused API
...
Both _gtk_css_style_property_print_value() and
_gtk_css_style_property_compute_value() aren't necessary anymore and are
replaced by _gtk_css_value_print() and _gtk_css_value_comptue()
respectively.
2012-08-28 15:40:57 +02:00
Cosimo Cecchi
f70fc49ebc
docs: fix a number of typos and obsolete references
2012-07-02 10:41:11 -04:00
Benjamin Otte
25695684ad
cssprovider: Remove unused members from scanner
...
Now that the parser takes care of the file, we don't need to keep track
of it ourselves anymore.
2012-05-11 16:42:12 +02:00
Benjamin Otte
0e4670150a
csssection: Remove file argument from constructor
...
The parser has the file available.
2012-05-11 16:42:12 +02:00
Benjamin Otte
a7f238138e
styleproperty: Remove base argument
...
from _gtk_style_property_parse_value(). The GtkCssParser takes care of
that now.
2012-05-11 16:42:12 +02:00
Benjamin Otte
1367ef7e54
cssstylefuncs: Remove base argument
...
The GtkCssParser keeps track of the base file now.
2012-05-11 16:42:12 +02:00
Benjamin Otte
e1317268a3
cssparser: Change APIs that work with files
...
Now that we keep track of the parser's file, we don't require it to be
passed anymore.
2012-05-11 16:42:12 +02:00
Benjamin Otte
a65780902a
cssparser: Keep track of the file
2012-05-11 16:42:11 +02:00
Benjamin Otte
a8d8c02ab7
Revert "cssprovider: Remove unused members from scanner"
...
This reverts commit b501e64a8a
.
2012-05-11 16:41:25 +02:00
Benjamin Otte
b501e64a8a
cssprovider: Remove unused members from scanner
...
Now that the parser takes care of the file, we don't need to keep track
of it ourselves anymore.
2012-05-11 16:35:30 +02:00
Benjamin Otte
b4195cb408
cssmatcher: Handle case of empty widget path
...
This is tested by the stylecontext test, but doesn't appear in practice.
2012-05-01 03:13:02 +02:00
Benjamin Otte
6c63842e68
cssprovider: Actually match the state for style properties
...
Copy/paste error when refactoring.
Caught by stylecontext test.
2012-05-01 03:13:02 +02:00
William Jon McCann
9f5e580821
Try to load css themes from the XDG config directory first
...
Will fall back to previous locations.
https://bugzilla.gnome.org/show_bug.cgi?id=646631
2012-04-30 06:42:33 -04:00
Benjamin Otte
6443baadb9
styleprovider: Make all implementors emit the new signal
...
... and listen to it in the cases where they use other style providers.
2012-04-17 08:59:21 +02:00
Benjamin Otte
0111b9d507
symboliccolor: Treat it as a CssValue
...
.. now that it is one.
2012-04-17 08:59:20 +02:00
Benjamin Otte
505fefbec7
cssprovider: Add an empty line when printing
...
... between the @define-color statements and the rules.
2012-04-17 08:59:20 +02:00
Benjamin Otte
0cce3520d3
cssprovider: Store widget style value as string
...
There's no need to turn it into a GtkCssValue, it's always a string.
2012-04-17 08:59:15 +02:00
Benjamin Otte
9b7640b898
styleproperty: Make _gtk_style_property_parse_value() return a CssValue
...
Also split out initial/inherit handling into a custom GtkCssValue class.
2012-04-17 08:59:11 +02:00
Benjamin Otte
718ceaec45
css: Remove _gtk_css_style_property_is_specified_type()
...
That check is going to be refactored away.
2012-04-17 08:59:11 +02:00
Benjamin Otte
8dbe8c8349
syleprovider: Add a vfunc to get the changes
...
This way we can check what changes are even interesting for our matcher.
2012-04-17 08:59:08 +02:00
Benjamin Otte
a94b85d375
css: Make the style provider take a matcher as an input argument
2012-04-17 08:59:07 +02:00
Alexander Larsson
0b26605ab0
css: Only keep around GtkCssSections if GTK_CSS_DEBUG env var set
...
These are used purely for CSS debugging, and was using over 100k just
starting up gtk3-demo.
2012-03-29 13:57:22 +02:00
Alexander Larsson
a20b4423f4
Remove broken approach to get stable sort of CSS rules
...
The pointer comparisons in the sort compare function just doesn't
work.
We still need a stable sort, but the plan is to add a real
one in glib.
2012-03-15 21:12:32 +01:00
Alexander Larsson
7603e6e473
css: Use GtkCssValues instead of GValue in the css machinery
...
Also, in places where we're computing a new CssValue based on an
old one, make sure that if nothing changes we're returning a reference
to the old one, rather than creating a new identical instance.
2012-03-08 11:03:57 +01:00
Paolo Borelli
8adf311acd
Free the resource file string.
2012-03-04 18:02:06 +01:00
Benjamin Otte
67d0b8195d
css: Move selector parsing code into a custom function
2012-03-02 02:17:09 +01:00
Benjamin Otte
64425a28de
bitmask: Make setters return a new value
...
(Actually, it's not a real 'new' value yet, but will be soon.
This is the first step to make bitmasks immutable.
2012-03-01 15:10:36 +01:00
Benjamin Otte
49571ccc30
css: Fix variable
...
And you'd think I'd test my code...
2012-03-01 13:46:11 +01:00
Benjamin Otte
4608278328
cssprovider: Redo styles as an array
...
Saves even more memory and avoids an extra copy during assigning.
2012-03-01 06:40:15 +01:00
Benjamin Otte
98f557b859
css: Fix fallout
...
.. from carelessly merging 85b1b9b778
2012-03-01 05:32:34 +01:00
Alexander Larsson
85b1b9b778
Don't use hashtables for storing css rule properties
...
This saves a lot of memory
2012-03-01 03:00:29 +01:00
Javier Jardón
9d0febc9a6
Change FSF Address
2012-02-27 17:06:11 +00:00
Matthias Clasen
a96c122fa4
Plug a small memory leak
2012-02-11 13:06:12 -05:00
Sebastian Keller
f33fe5b677
docs: Add documentation for alpha() in CSS
2012-02-11 01:48:03 +01:00
Alexander Larsson
cdc6e82720
Remove all default css and make Raleigh a pure fallback theme
...
It was problematic to maintain Raleigh going forward, as any
changes in it affected all themes. Also, its more robust if
each theme is a full standalone css rather than relying on
an inherited css base.
So, this changes Raleigh to a standalone theme that we can tweak
without accidentally breaking other themes, and makes the
default theme empty. In fact, we don't even add the default
provider anymore as its always empty.
2012-02-09 23:19:17 +01:00
Alexander Larsson
fb0c53a0ed
Fix crash with theme resource file
...
The freeing the GResource in gtk_css_provider_reset caused problems
because it was called from gtk_css_provider_load_from_path() inside
gtk_css_provider_get_named(). We fix this by delaying the
setting of priv->resource until we successfully loaded the file.
2012-02-03 16:37:54 +01:00
Alexander Larsson
b5b9965283
css: Remove any loaded resource in gtk_css_provider_reset
2012-02-03 16:01:51 +01:00
Alexander Larsson
57386285fa
Support a gtk.gresource file in themes
...
This lets themes install a .gresource for efficient loading
of resources. This resource file will (if it exists) be automatically
loaded (mmaped) when the theme is used and unloaded when not used.
2012-02-03 15:50:49 +01:00
Benjamin Otte
762ea4793f
css: Make border-width a length property
2012-02-02 03:14:00 +01:00
Benjamin Otte
a81ac3d5cd
css: Add a check function for specified types
...
... and use it.
It seems kinda necessary for the refactoring I'm about to do...
2012-02-02 03:14:00 +01:00
Benjamin Otte
8da4c2affa
css: Return GArrays from shorthand parsing
...
GValueArray is deprecated now.
2012-01-25 19:05:33 +01:00
Benjamin Otte
6f9cc94fae
cssprovider: Improve error handling for import errors
...
We don't want to include the whitespace after an import statement.
Because people tend to add newlines after @import, we report the wrong
lines for failed imports. And that's bad.
2012-01-16 18:44:43 +01:00
Benjamin Otte
1b0231b743
css: Don't import CSS too early
...
First, finish parsing the import rule including the semicolon. Then try
to actually import.
test: css/parser/at-invalid-01.css
2012-01-16 18:34:41 +01:00
Alexander Larsson
1a36414da7
Access win32 css as resource, not custom generated C code
2012-01-16 14:19:18 +01:00
Alexander Larsson
4f0cc6572b
Add Gtk resource file with the default CSS file
2012-01-16 14:19:16 +01:00
Cosimo Cecchi
ddd164c230
provider: use _gtk_css_parse_read_url() in parse_import()
...
Instead of _gtk_css_parser_read_uri(), which is going away.
2012-01-13 18:08:12 -05:00
Rui Matos
e9adaabc5e
Rename 'window-unfocused' to 'backdrop'
...
'window-unfocused' is too long and mentions "focus" which is historically
loaded with the meaning "input focus".
'backdrop' isn't generally used in GUI speak and still conveys the state the
widgets in an unfocused or background toplevel window are in.
2012-01-09 18:38:00 +01:00
Benjamin Otte
2d46618e08
styleproperty: Let parse_value() initialize the value
...
... and document that behavior.
2012-01-09 18:37:54 +01:00
Benjamin Otte
01548bfcbe
shorthand: Redo shorthand value parsing
...
The new approach does not need unpack functions anymore.
2012-01-09 18:37:53 +01:00
Benjamin Otte
5ae00c3755
css: Use _gtk_style_property_get_value_type() where appropriate
2012-01-09 18:37:53 +01:00
Benjamin Otte
389531d15d
styleproperty: require property in _gtk_style_property_parse_value()
...
Other code uses _gtk_css_style_parse_value() instead now.
2012-01-09 18:37:53 +01:00
Benjamin Otte
30eb26087c
css: Feed sections to CSS lookup code
2012-01-09 18:37:53 +01:00
Benjamin Otte
b904679a11
styleproperty: Move value printing to real properties
...
We can't print shorthands, so don't try.
In particular, I want to get away from shorthands being representable
using GValue, and this function kinda requires that.
2012-01-09 18:37:53 +01:00
Benjamin Otte
544d210a61
css: Move a bunch of functions
...
... from GtkStyleProperty to GtkCssStyleProperty.
2012-01-09 18:37:52 +01:00
Benjamin Otte
7a76694780
styleproperty: Use _gtk_style_property_get_name()
2012-01-09 18:37:52 +01:00
Benjamin Otte
4383701e25
styleproperty: unconstify
...
GtkStyleProperty is a real GObject now, so treat it like one and don't
use const.
2012-01-09 18:37:52 +01:00
Benjamin Otte
81b2bb0ade
styleproperty: Get rid of _gtk_style_property_is_shorthand()
...
Use GTK_IS_CSS_SHORTHAND_PROPERTY() instead now that we have it.
2012-01-09 18:37:51 +01:00
Benjamin Otte
57379adb3c
css: Add generic support for 'inherit' and 'initial'
...
CSS3 says they work for every property, so here we go.
2012-01-09 18:37:51 +01:00
Benjamin Otte
a6ac53e2a9
css: Change prototype of _gtk_css_selector_matches()
...
Passing the length of the widget path that is relevant is not necessary
anymore, it was only useful for inheritance. Instead, we now pass the
state flags and let the selector do the state matching for us.
2012-01-09 18:37:50 +01:00
Benjamin Otte
a3225fdd42
cssprovider: Remove has_inherit flag from rulesets
...
It's not used anymore
2012-01-09 18:37:50 +01:00
Benjamin Otte
40a7618d2a
cssprovider: Don't do inheritance anymore
...
Its' done in GtkCssLookup with the help of GtkStyleContext::parent now.
2012-01-09 18:37:50 +01:00
Benjamin Otte
ba5e7012b1
css: Redo StyleProvider interface
...
We now use the GtkStleProviderPrivate interface, which hopefully is
faster and more conformant to CSS. Long term, it definitely should be
both.
I would have liked to split this up into multiple commits, but couldn't
find a way.
2012-01-09 18:37:50 +01:00
Benjamin Otte
54d2b9dbc2
cssprovider: Keep a bitmask for the properties
...
That way we can easily tell wich properties are in use.
2012-01-09 18:37:49 +01:00
Matthias Clasen
d7e8388e9d
Add a Since tag
...
gtk_css_provider_to_string is a post-3.0 addition.
Fixes bug 659516
2011-12-30 00:38:06 -05:00
Benjamin Otte
58d553c604
cssprovider: Fix leak
...
Thanks to the heroic valgrinding efforts of Olivier Sessnik, another
leak could be plugged.
2011-12-23 22:30:45 +01:00
Stef Walter
d462f86aad
GtkCssProvider: don't segfault when CSS file is not found
...
* Fix null dereference in gtk_css_provider_take_error()
* And another in gtk_css_provider_emit_error()
https://bugzilla.gnome.org/show_bug.cgi?id=664537
2011-11-30 00:23:07 -05:00
Alexander Larsson
f59836a4d0
Build in default win32 css as gtk-win32
2011-11-18 16:54:04 +01:00
Rui Matos
70f87b8bd5
gtk: Add a GTK_STATE_FLAG_WINDOW_UNFOCUSED widget state flag
...
This allows themes to style widgets differently according to whether the
toplevel window they are in is presented as focused.
https://bugzilla.gnome.org/show_bug.cgi?id=661428
2011-11-08 19:33:22 +00:00
Marc-André Lureau
3b436eec6d
css: start background-repeat
...
By default, a background image is stretched. Instead, it is worth to
have a tiled background.
This patch allows background surfaces to be repeated or not, and should
be compatible with future extensions and CSS.
https://bugzilla.gnome.org/show_bug.cgi?id=663522
2011-11-08 11:10:44 -05:00
Michael Natterer
2688ccdbc4
gtk: clean up the private horror
...
- add gtkmodulesprivate.h and move stuff there from gtkprivate.h
- add gtkprivate.c and move stuff there from gtkmain.c
- add gtkwin32.c and move stuff there from gtkmain.c
- don't redefine GTK_DATADIR and friends in gtkprivate.h
- have _gtk_get_datadir() and friends on all platforms
- remove the horrid hacks where gtkprivate.h can't be included,
or must be included later due to redefinition of the compile-time
directories
2011-10-22 23:53:55 +02:00
Cosimo Cecchi
1f2cfb5619
all: add an 'only-child' pseudo-class selector
...
Add an :only-child pseudo-class selector, which selects single children
of a parent container.
https://bugzilla.gnome.org/show_bug.cgi?id=660833
2011-10-04 11:47:47 -04:00
Benjamin Otte
b01e20f1d1
cssprovider: Remove unused enums
2011-09-26 16:00:26 +02:00
Morten Welinder
9d96830571
cssprovider: Remove outdated docs
2011-09-22 21:44:05 +02:00
Dan Winship
e028a5c090
gtkcssprovider: fix a crash in gtk_css_provider_parsing_error
...
"info" was being declared in two different scopes, and the one that
was freed wasn't the one that was set.
2011-09-09 09:37:44 -04:00
Eitan Isaacson
6eb777a8af
Change gtk_css_provider_propagate_error's signature.
...
Update to new parsing-error signal.
https://bugzilla.gnome.org/show_bug.cgi?id=657882
2011-09-02 09:19:18 -07:00
Benjamin Otte
26e9d07718
API: cssprovider: Change parsing-error signal
...
Instead of path, line and position, emit the section the error happened
in. This has a lot more information to consume.
2011-08-26 16:26:28 +02:00
Benjamin Otte
0d1b73f857
cssprovider: Store sections with parsed values
...
Also create a separate section for values to associate the values with.
Finally, use this section information when delayed-parsing a widget
style property.
2011-08-26 16:26:27 +02:00
Benjamin Otte
ebf0b6ee4d
cssprovider: Handle non-NULL-terminated data
...
Do a dumb copy if that happens.
2011-08-26 16:26:27 +02:00
Benjamin Otte
d985b95ef9
cssprovider: Keep only the curent section while parsing
...
We don't need a list of sections, the section can give us the parent
when we need it (d'oh).
2011-08-26 16:26:27 +02:00
Benjamin Otte
19c44967cb
cssprovider: Remove dead code
...
The code isn't used anymore since the introduction of rulesets.
2011-08-26 16:26:27 +02:00
Benjamin Otte
00d14e3515
API: css: Add GtkCssSection
...
This struct keeps track of an area of text in a CSS file and uses it
when specifying information. Also, the cssprovider keeps track of
sections when parsing a file.
2011-08-26 16:26:27 +02:00
Benjamin Otte
5a1f371e12
cssprovider: Fix names for first and last child pseudo class
...
The correct name is :first-child, not :first
2011-07-21 02:43:53 +02:00
Benjamin Otte
1a763044fe
cssprovider: Emit an error when parsing a binding fails
2011-07-20 02:36:44 +02:00
Benjamin Otte
b8465d289b
cssprovider: Get the location right for semicolon warnings
2011-07-20 02:36:44 +02:00
Benjamin Otte
5eefc37b3f
cssprovider: @import <string> is valid CSS
...
The parser rewrite insisted on @import url(<string>) syntax, but CSS
xplicitly allows omitting the url string.
2011-07-20 02:36:44 +02:00
Benjamin Otte
0d253b67f4
css: Make font property a shorthand
...
... and implement the CSS font properties:
- font-size
- font-style
- font-family
- font-weight
- font-variant
This is the second try at this. The first was backed out previously due
to bugginess. Let's hope this one survives a bit longer.
Also makes the font-family CSS test work again.
2011-06-15 12:52:53 +02:00
Benjamin Otte
3aa73bebea
styleproperty: Add border-*-color style properties
...
And make border-color a shorthand
2011-06-13 15:01:52 +02:00
Benjamin Otte
287069ca3c
default theme: Fix menuitem check/radio colors
2011-06-12 23:35:39 +02:00
Benjamin Otte
3712ec71d4
default theme: fix menuitem selections
2011-06-12 23:28:43 +02:00
Benjamin Otte
d7598aabe3
default theme: fix tooltip colors
2011-06-12 23:26:53 +02:00
Cosimo Cecchi
1539ade9d5
cssprovider: add a doc paragraph about box-shadow
2011-06-11 09:29:43 +02:00
Cosimo Cecchi
3d1407a01a
border-image: add support for border-image-width too
...
It's useful to set a slice size != border-width, as backgrounds are
clipped to border-width too.
As slices can be half-transparent and overlap the background,
this would not fill the border box properly if we only use a single
property for specifying the width.
Also, this brings us even closer to CSS3.
2011-06-09 20:01:57 -04:00
Cosimo Cecchi
a2a8d3e8f4
docs: expand the docs for border-image
...
https://bugzilla.gnome.org/show_bug.cgi?id=651194
2011-06-09 05:51:54 +02:00
Benjamin Otte
2e6bb2a0c9
Revert "css: Make font property a shorthand"
...
The hack in gtk_style_context_get_font() was causing segfaults in
combobox code. This is not acceptable and I'm not awake enough to fix
it, so just reverting until it's fixed sanely is easiest.
This reverts commit cf6bfbdb17
.
2011-06-02 02:31:44 +02:00
Benjamin Otte
a659143d55
docs: There is no font-name style property
...
It's "font"
2011-06-02 02:03:52 +02:00
Benjamin Otte
fd4ffbb6da
styleproperty: Add _gtk_style_property_is_inherit()
...
And use it instead of gtk_style_param_get_inherit()
2011-06-02 02:03:52 +02:00
Benjamin Otte
cf6bfbdb17
css: Make font property a shorthand
...
... and implement the CSS font properties:
- font-size
- font-style
- font-family
- font-weight
- font-variant
2011-06-02 02:03:52 +02:00
Benjamin Otte
0aa07c6fd6
cssprovider: Remove colors when resetting
2011-06-02 02:03:52 +02:00
Benjamin Otte
d0e1e2b103
css: Move property parsing into styleproperty file
...
Just shuffles code around for parsing properties.
2011-06-02 02:03:50 +02:00
Benjamin Otte
5a42464547
css: Rename function to _gtk_style_property_parse_value()
...
... and take an optional style property as argument. This way, we can
allow custom parse functions for properties. The style property needs to
be optional so that we can use it for widget style properties, too.
2011-06-02 02:03:50 +02:00
Benjamin Otte
35488f5846
css: Rename struct variable
...
I want to add parse_func as something different soon.
2011-06-02 02:03:50 +02:00
Benjamin Otte
3e7f74c456
styleproperty: Change _css_value_to_string()
...
Name it _gtk_style_property_print_value() and actually pass it the style
property. This way, we can later change it to use custom print functions
for different style properties.
2011-06-02 02:03:50 +02:00
Matthias Clasen
0b9cd78017
Add annotations to gtk_css_provider_load_from_data
...
https://bugzilla.gnome.org/show_bug.cgi?id=646859
2011-05-31 20:37:43 -04:00
Carlos Garnacho
20433efbfa
gtkcssprovider: Free shorthand border GValues in the right place
...
The call to gtk_border_free() within unpack_border() felt completely
in the wrong place, as the border actually pertains to the GValue
being unpacked. Plus, the GValue itself was also being leaked.
2011-05-30 19:29:22 +02:00
Carlos Garnacho
2c8e01dc80
gtkcssprovider: plug several leaks
...
In finalize(), clear all rulesets.
In parse_declaration(), Free the GValue under unhandled error situations.
In gtk_css_provider_load_internal(), Do not leak the file contents.
2011-05-30 19:26:28 +02:00
Carlos Garnacho
747dc65c2c
gtkcssprovider: Use g_slice_dup() to copy GValues around
...
GValues stored in GtkCssRulesets are gslice managed, so don't
g_memdup() GValues from shorthand properties. This fixes
memory corruptions when reloading contents in a GtkCssProvider.
2011-05-30 19:13:36 +02:00
Benjamin Otte
7de5a4e08d
cssprovider: Don't convert widget style properties to CSS
...
They are still CSS, so converting them is wrong.
2011-05-23 15:56:09 +02:00
Benjamin Otte
7836df29cb
cssprovider: Use right hash table when printing
...
If the CSS provider had widget style properties, printing them would
crash since 82b340f6f0
2011-05-23 15:56:09 +02:00
Benjamin Otte
21236cf270
style: Make margin a shorthand
...
... and add the real properties:
- margin-top
- margin-left
- margin-bottom
- margin-right
2011-05-22 05:56:12 +02:00
Benjamin Otte
a35aa96149
style: Make padding a shorthand
...
... and add the real properties:
- padding-top
- padding-left
- padding-bottom
- padding-right
2011-05-22 05:56:12 +02:00
Benjamin Otte
f5c7cefcca
style: Convert border-width to a shorthand
...
Add the corresponding properties it refers to, too:
- border-top-width
- border-left-width
- border-bottom-width
- border-right-width
2011-05-22 05:56:11 +02:00
Benjamin Otte
42a4bd1c5b
style: Add support for shorthand properties
...
Shorthand properties are basically the same a in CSS. For storage in
style properties or the CSS provider, they are unpacked into the real
values, so it is possible to partially override them.
No properties are yet converted to the new world yet, this is just the
code for supporting them.
2011-05-22 01:25:17 +02:00
Benjamin Otte
73c39f5b16
styleproperties: Add _gtk_style_properties_set_property_by_property()
...
... as a replacement for _gtk_style_properties_set_property_by_pspec().
We'll need that to handle shorthands.
2011-05-22 01:25:16 +02:00
Benjamin Otte
5eca8f8275
css: Rename gtkcssstrfuncs file to gtkstyleproperty
...
The idea is to handle the style property registering etc in this file
instead of the styleproperties file. The next commits will move those
files.
2011-05-21 22:49:43 +02:00
Benjamin Otte
548a1302ee
cssprovider: Use _gtk_style_property_lookup()
...
This way we get the actual data node and can use it.
2011-05-21 22:49:43 +02:00
Benjamin Otte
d333911d30
docs: Add missing <row>
2011-05-21 03:41:52 +02:00
Cosimo Cecchi
016f540931
styleproperties: add a "text-shadow" style property
...
And document its use in the CSS parser gtk-doc.
https://bugzilla.gnome.org/show_bug.cgi?id=649314
2011-05-20 18:44:15 -04:00
Benjamin Otte
a1858c5454
cssprovider: When loading themes, don't pass in an error
...
We want to parse existing themes as well as possible instead of failing.
And the g_warning() is preserved.
2011-05-18 22:17:59 +02:00
Benjamin Otte
17e3d6f85e
cssprovider: Don't propagate deprecation messages to passed-in error
...
It's an informative message, don't stop parsing the CSS because of it.
2011-05-18 22:17:59 +02:00
Benjamin Otte
d2ef71627b
css: Make property parsing functions take a css parser
...
Instead of reading a string and then passing that in, let the parse
functions use the full power of the parser.
2011-05-18 22:17:59 +02:00
Benjamin Otte
03e84b7ee3
css: Move binding set parsing to strfuncs
2011-05-18 22:17:59 +02:00
Benjamin Otte
8111d99183
cssprovider: Cache if rulesets have inheritable style properties
...
This provides a huge speedup as we only need to preprocess style
properties when they are indeed inherited. This roughly doubles the
performance of the CSS matcher and brings the time taken by
gtk_css_provider_get_style() from 19% to 7% in my favorite benchmark.
2011-05-18 22:17:58 +02:00
Benjamin Otte
82b340f6f0
cssprovider: Keep two hash tables per ruleset
...
One for the style properties, one for the widget style properties.
This way we can make one hash table by pspec which means we don't have
to repeat the pspec lookup.
2011-05-18 22:17:58 +02:00
Benjamin Otte
399a439103
cssprovider: Add a new setter for rulesets
...
We now have set-by-pspec (which is used for normal style properties) and
set-by-name (which is used by widget properties).
2011-05-18 22:17:58 +02:00
Benjamin Otte
0318ab2ce1
cssprovider: Refactor handling of rulesets
...
Keep rulesets as an on-stack/heap structure instead of allocating all
instances separately.
Also, pass a ruleset to the ruleset parser, so we can make the ruleset
parser do lots of fancy things that might be useful for performance.
2011-05-18 22:17:58 +02:00
Benjamin Otte
151294576d
cssprovider: Refactor code to have a gtk_css_ruleset_matches()
2011-05-18 22:17:58 +02:00
Benjamin Otte
71c748b47e
cssprovider: Rename "SelectorStyleInfo" to "Ruleset"
...
No code changes, just clarification of the name
2011-05-18 22:17:58 +02:00
Benjamin Otte
b37f9fdf81
css: Implement inherit properties
...
Huge performance hit (slows down things roughly by a factor of 3), but
necessary for CSS conformance and for implementing "inherit" and
percentages.
2011-05-18 22:17:58 +02:00
Benjamin Otte
c1dc3e9372
css: Refactor code to do property lookups earlier
...
We want to ook up the property in the CSS parser, so we can do fancy
things with it. We currently don't but we want to later.
2011-05-18 22:17:57 +02:00
Benjamin Otte
d6f0042773
css: Make _gtk_css_selector_matches() take a path length
...
This will be necessary when handling inherit.
2011-05-18 22:17:57 +02:00
Benjamin Otte
08e83ca66b
cssprovider: Simplify code
...
Don't go through an intermediate array when matching styles.
2011-05-18 22:17:57 +02:00
Benjamin Otte
8605a2a10a
cssprovider: Speed up gtk_widget_style_get() property lookups
...
Previously we got the list of all matching rules and then iterated it to
find the first one that had the property. Now we look while matching
rules, so we don't lookup rules that we don't need.
2011-05-18 22:17:57 +02:00
Benjamin Otte
e875c619ef
css: No more special code for regions
...
Just treat regions the same as elements.
2011-05-18 22:17:55 +02:00
Benjamin Otte
fc88b0f47c
css: Rewrite selectors
...
Selectors now go into their own C file. The new selectors are modeled a
lot closer to the CSS spec. In particular the specificity computation
matches CSS 2.1 exactly.
For details about the why, see also:
http://mail.gnome.org/archives/gtk-devel-list/2011-May/msg00061.html
https://bugzilla.gnome.org/show_bug.cgi?id=649798
2011-05-18 22:17:55 +02:00
Benjamin Otte
4e2d3f5d18
cssprovider: Remove a bunch of commented-out code
...
The code was only kept for reference while writing the new parser, it's
not necessary anhymore.
2011-05-18 22:17:55 +02:00
Benjamin Otte
7ccb9db79e
css: Rewrite the parser
...
Instead of relying on GScanner and its idea of syntax, code up a parser
that obeys the CSS spec.
This also has the great side effect of reporting correct line numbers
and positions.
Also included is a reorganization of the returned error values. Instead
of error values describing what type of syntax error was returned, the
code just returns SYNTAX_ERROR. Other messages exist for when actual
values don't work or when errors shouldn't be fatal due to backwards
compatibility.
2011-05-18 22:17:55 +02:00
Benjamin Otte
e1dda3d03f
cssprovider: Don't hardcode strings anymore
2011-05-18 21:58:46 +02:00
Benjamin Otte
2a0ac6d102
cssprovider: Parse strings as identifiers when parsing property values
2011-05-18 21:58:46 +02:00
Benjamin Otte
6b66efe873
cssprovider: Add recursion checks for @import
...
This is pretty important, because otherwise recursions cause crashes.
And if you accidentally change your theme to one that crashes on load,
all your gonna SEGV and then on reboot, gdm tries to load the theme...
2011-05-18 21:58:46 +02:00
Benjamin Otte
22492a37c1
cssprovider: Allow storing the parent stylesheet
2011-05-18 21:58:46 +02:00
Benjamin Otte
286b5b9b72
cssprovider: Don't fail if an import doesn't work
2011-05-18 21:58:46 +02:00
Benjamin Otte
d6c6a0bcc0
cssprovider: Reimplement gtk_css_provider_load_from_path()
...
Call gtk_css_provider_load_from_file() instead of the internal function.
This has two advantages:
1) It simplifies the code a lot
2) It gets rid of GMappedFile usage. GMappedFile does not work
everywhere, so this is finally portable.
2011-05-18 21:58:46 +02:00
Benjamin Otte
b0d3078aa7
cssprovider: Make @import use the new load_internal() func
2011-05-18 21:58:46 +02:00
Benjamin Otte
a183375b94
cssprovider: Make load_internal() load the contents
...
This way, we achieve two things:
1) We can unify file loading to one location
2) We can emit the error from file loading using the parsing-error
signal. This is very useful for @import handling in particular.
2011-05-18 21:58:46 +02:00
Benjamin Otte
5bedc822ec
cssprovider: Introduce gtk_css_provider_take_error_full()
...
Emits the error without the need for a scanner. Also simplifies
gtk_css_provider_take_error() because we now can assert an available
scanner at all times.
2011-05-18 21:58:46 +02:00
Benjamin Otte
f937d0275a
cssprovider: More error handling into load_internal()
...
Now the parsing functions starting at parse_stylesheet() don't have to
care about errors anymore.
2011-05-18 21:58:46 +02:00
Benjamin Otte
da52175013
cssprovider: Add a load_internal function that all loads chain to
2011-05-18 21:58:46 +02:00
Benjamin Otte
5cf6a8a23f
cssprovider: Keep base url in the scanner
...
And provide a nice function to query it. Simplifies a bunch of code.
2011-05-18 21:58:46 +02:00
Benjamin Otte
84ba8255fc
cssprovider: Move properties to scanner constructor
...
So we can set them in one place.
2011-05-18 21:58:46 +02:00
Benjamin Otte
2de4f71586
cssprovider: Don't store scanner in the struct
...
Instead, create scanners whenever we actually parse stuff.
2011-05-18 21:58:46 +02:00
Benjamin Otte
5c940f2bd4
cssprovider: Get rid of gtk_css_provider_reset_parser()
...
Instead call gtk_css_scanner_reset(). There is nothing else we could
need to do.
2011-05-18 21:58:45 +02:00
Benjamin Otte
607846879e
cssprovider: Keep track of passed in error differently
...
Instead of having an error member in the CSS provider's private struct,
connect a signal handler when an error is passed in. This has two
advantages:
1) It makes the code clearer as we don't have to keep track of an error
member anywhere.
2) It causes a non-emission of the g_warning() when an error was passed
in, because it only triggers when no signal handlers are connected.
So we get identical behavior to GTK 3.0 where warnings where only
emitted when no error was passed in.
2011-05-18 21:58:45 +02:00
Benjamin Otte
8fb6fdd3e7
cssprovider: Do error handling differently
...
Instead of aborting a parse whenever we encounter an error, parse to the
end. But if a GError was passed in, reset the provider completely as if
nothing had been parsed.
2011-05-18 21:58:45 +02:00
Benjamin Otte
992ee6a203
cssprovider: Emit a g_warning() when a css file is erroneous
...
... and no other error handler is active. See the source code comment
for the reasoning.
2011-05-18 21:58:45 +02:00
Benjamin Otte
2d75dd2fdf
cssprovider: No need to restore after @import parsing
...
With the recent changes, this just resets the error, and we don't the
error reset from subfile parsing.
2011-05-18 21:58:45 +02:00
Benjamin Otte
3e146b468b
cssprovider: Store current properties and selectors in scanner
...
They don't belong in the css provider
2011-05-18 21:58:45 +02:00
Benjamin Otte
f3bb815517
cssprovider: Use scanner variable instead of priv->scanner
2011-05-18 21:58:45 +02:00
Benjamin Otte
d85cbfe157
cssprovider: Pass scanner argument explicitly to error functions
2011-05-18 21:58:45 +02:00
Benjamin Otte
5bc2ae1a91
cssprovider: Update the scope modifying functions
...
Make them take the scanner as an argument, as that's what gets changed,
not the CssProvider.
2011-05-18 21:58:45 +02:00
Benjamin Otte
83ebc91dce
cssprovider: track state in the scanner
...
This way, we don't have to do magic copies when we create a new scanner
for a subfile.
2011-05-18 21:58:45 +02:00
Benjamin Otte
740f2458bf
cssprovider: Add a private structure to the scanner
...
So far, it's unused
2011-05-18 21:58:45 +02:00
Benjamin Otte
073d75a880
cssprovider: Add a custom gtk_css_scanner_destroy() function
...
So far, it does nothing
2011-05-18 21:58:45 +02:00
Benjamin Otte
5ca9f25523
cssprovider: Pass the scanner explicitly to parse_stylesheet()
...
This is the first step in decoupling the scanner from the provider.
2011-05-18 21:58:45 +02:00