Compare commits

..

22 Commits

Author SHA1 Message Date
Matthias Clasen e5d0f32d8c css: Improve error reporting for variables
Emit errors for all the variables that were being expanded
if an error occurs while parsing a property value at compute time.

Include the variables that are being expanded in the error message.
2024-05-09 23:13:53 -04:00
Matthias Clasen e825fd901f css parser: Keep variables for tokenizers
Add a function that gets the names of the variables that the
parser is currently in the process of expanding. This will
be used for error reporting.
2024-05-09 23:13:53 -04:00
Matthias Clasen e3543f37d3 css parser: Inline the tokenizer array
This is in preparation of associating more data with the token streams.
2024-05-09 23:13:53 -04:00
Matthias Clasen e9bf0322ac css provider: Set bytes on sections
Pass the bytes we're parsing to the sections, and keep a pointer
to them around, so we can compare them in the has_section
implementation.

This commit also corrects some of the location information that
we add into the section for variables to be more accurate.
2024-05-09 23:13:53 -04:00
Matthias Clasen 6d5cb0a083 css parser: Add gtk_css_parser_get_bytes
Gets the bytes that the parser is operating on.
2024-05-09 23:13:53 -04:00
Matthias Clasen 8b5aab459a css provider: Set sections on all variable values
We were doing it in one case, but forgetting it in another.
These sections are necessary to report meaningful error locations
when parsing property values at compute time.
2024-05-09 23:13:53 -04:00
Matthias Clasen 8da3cc10fd style cascade: Propagate errors
When we compute values, the provider we use ends up being the
style cascade. If we hit a parser error when parsing variable-bearing
property values at compute time, we emit the error on that provider.

By making the cascade propagate the error back to the proper css
provider that contains the section in question, we get it reported
back to the css editor in the inspector.
2024-05-09 23:13:53 -04:00
Matthias Clasen f48a4e84af style provider: Add a has_section api
Add gtk_style_provider_has_section and implement it for
GtkCssProvider. This will be used later to direct error
emissions to the right provider.
2024-05-09 23:13:53 -04:00
Matthias Clasen 09c76208a2 css parser: Add bytes to sections
We will use this later to link sections back to the providers
they come from.
2024-05-09 23:13:53 -04:00
Matthias Clasen 62b1d21556 css parser: Add gtk_css_parser_skip_whitespace
Does what it says.
2024-05-09 23:13:53 -04:00
Matthias Clasen 8fba58eaa9 css: Don't accept junk
Check that there is no junk at the end of the property value
when parsing variable-bearing properties at compute time.
2024-05-09 23:13:52 -04:00
Alice Mikhaylenko b4890edd64 inspector: Sort GTK CSS properties between standard and custom ones 2024-05-08 19:03:45 +04:00
Alice Mikhaylenko 93b9388180 inspector: Show custom properties for css nodes 2024-05-08 19:03:45 +04:00
Alice Mikhaylenko 76b2609ad5 testsuite: Add css variables tests 2024-05-08 19:03:44 +04:00
Alice Mikhaylenko a37a0711ad csskeyframes: Support variables 2024-05-08 19:03:44 +04:00
Alice Mikhaylenko 23dbb7122c cssanimation: Recompute values while playing
This will be necessary for supporting variables in animations.

For this we need to pass all the gtk_css_value_compute() parameters into
GtkCssAnimatedStyle: parent style and provider.
2024-05-08 19:03:44 +04:00
Alice Mikhaylenko e04ab263f9 cssstaticstyle: Split property lists into a separate header
We'll need to use them in GtkCssAnimatedStyle too.
2024-05-08 19:03:44 +04:00
Alice Mikhaylenko 5e6e808a55 cssvalue: Pass an extra GtkCssVariableSet to compute()
We'll need this to support variables in @keyframes, since styles will
need to combine their own variables and the ones from the keyframes.

See the next commit, this one is split out to avoid a huge diff.
2024-05-08 19:03:44 +04:00
Alice Mikhaylenko 6eaf6e2f7d Implement basic support for CSS variables 2024-05-08 19:03:43 +04:00
Alice Mikhaylenko e4a4a0f6dd cssvalue: Add contains_variables()
We'll need this to know which values to recompute for animations.

It will be used in the next commit, it's separate to avoid the diff
being too large.
2024-05-08 19:00:40 +04:00
Alice Mikhaylenko f301ea7936 csstokenizer: Add save() and restore()
We'll need that to check if property values contain variables.
2024-05-08 19:00:40 +04:00
Alice Mikhaylenko a3e9ecd199 cssprovider: Copy bytes when loading
We'll need to keep accessing them later to compute values with variables,
so we can't avoid this anymore.
2024-05-08 19:00:40 +04:00
176 changed files with 4323 additions and 7136 deletions
+2 -23
View File
@@ -1,20 +1,11 @@
Overview of Changes in 4.15.2, xx-xx-xxxx Overview of Changes in 4.15.1, xx-xx-xxxx
=========================================
Overview of Changes in 4.15.1, 21-05-2024
========================================= =========================================
* GtkGraphicsOffload: * GtkGraphicsOffload:
- Don't crash without a child - Don't crash without a child
* GtkSpinner:
- Don't animate when unmapped
* CSS: * CSS:
- Support the :root selector - Support the :root selector
- Support variables and custom properties (https://www.w3.org/TR/css-variables-1/)
- Implement math functions (https://www.w3.org/TR/css-values-4/)
- Support modern syntax and calc in rgb() and hsl()
* Icontheme: * Icontheme:
- Make symbolic svg loading more efficient - Make symbolic svg loading more efficient
@@ -23,22 +14,19 @@ Overview of Changes in 4.15.1, 21-05-2024
* Accessibility: * Accessibility:
- Make the gtk-demo sidebar search more accessible - Make the gtk-demo sidebar search more accessible
- Stop emitting focus events - Stop emitting focus events
- Realize child contexts when necessary
* GDK: * GDK:
- Support XDG_ACTIVATION_TOKEN - Support XDG_ACTIVATION_TOKEN
- dmabuf: Be more defensive when importing unknown formats to GL - dmabuf: Be more defensive when importing unknown formats to GL
- dmabuf: Use narrow range for YUV - dmabuf: Use narrow range for YUV
- vulkan: Recreate swapchains when necessary or beneficial
* GSK: * GSK:
- Improve logging for GDK_DEBUG=offload - Improve logging for GDK_DEBUG=offload
- Improve logging for GSK_DEBUG=renderer - Improve logging for GSK_DEBUG=renderer
- gpu: Warn about inefficient texture import - gpu: Warn about inefficient texture import
- gpu: Handle tiny offscreens correctly - gpu: Handle tiny offscreens correctly
- vulkan: Add profiler marks in various places - vulkan: Add profiler marks in various places
- vulkan: Fix a problem with imported dmabufs showing up black - vulkan: Fix a problem with imported dmabufs showing up black
- cairo: Speed up mask nodes, since we use them for symbolic icons
* Wayland: * Wayland:
- Use wl_compositor version 6 - Use wl_compositor version 6
@@ -51,22 +39,13 @@ Overview of Changes in 4.15.1, 21-05-2024
* Debugging: * Debugging:
- Show more texture details in the recorder - Show more texture details in the recorder
- Use GTK_DEBUG=css to see CSS deprecations
* macOS: * macOS:
- Fix problems with events handed back to the OS - Fix problems with events handed back to the OS
- Respect GDK_DEBUG=default-settings - Respect GDK_DEBUG=default-settings
- Allow applictions to handle Dock > Quit
* Deprecations:
- Use of @name colors in CSS
* Translation updates: * Translation updates:
Catalan
Georgian
Hungarian
Korean Korean
Portuguese
Turkish Turkish
+23 -44
View File
@@ -15,16 +15,16 @@ spec.
The following units are supported for basic datatypes: The following units are supported for basic datatypes:
Length Length
: px, pt, em, ex, rem, pc, in, cm, mm : px, pt, em, ex, rem, pc, in, cm, mm, calc()
Percentage Percentage
: % : %, calc()
Angle Angle
: deg, rad, grad, turn : deg, grad, turn, calc()
Time Time
: s, ms : s, ms, calc()
Length values with the em or ex units are resolved using the font Length values with the em or ex units are resolved using the font
size value, unless they occur in setting the font-size itself, in size value, unless they occur in setting the font-size itself, in
@@ -33,15 +33,11 @@ which case they are resolved using the inherited font size value.
The rem unit is resolved using the initial font size value, which is The rem unit is resolved using the initial font size value, which is
not quite the same as the CSS definition of rem. not quite the same as the CSS definition of rem.
Length values using physical units (pt, pc, in, cm, mm) are translated The calc() notation adds considerable expressive power. There are limits
to px using the dpi value specified by the -gtk-dpi property, which is on what types can be combined in such an expression (e.g. it does not make
different from the CSS definition, which uses a fixed dpi of 96. sense to add a number and a time). For the full details, see the
[CSS3 Values and Units](https://www.w3.org/TR/css3-values/#calc-notation)
The calc() notation adds considerable expressive power to all of these spec.
datatypes. There are limits on what types can be combined in such an
expression (e.g. it does not make sense to add a number and a time).
For the full details, see the
[CSS Values and Units](https://www.w3.org/TR/css-values-4/) spec.
A common pattern among shorthand properties (called 'four sides') is one A common pattern among shorthand properties (called 'four sides') is one
where one to four values can be specified, to determine a value for each where one to four values can be specified, to determine a value for each
@@ -86,53 +82,36 @@ color: var(--prop, green);
## Colors ## Colors
### CSS Colors
Colors can be expressed in numerous ways in CSS (see the
[Color Module](https://www.w3.org/TR/css-color-5/). GTK supports
many (but not all) of these.
You can use rgb(), rgba(), hsl() with both the legacy or the modern CSS
syntax, and calc() can be used as well in color expressions.
### Non-CSS Colors
GTK extends the CSS syntax with several additional ways to specify colors. GTK extends the CSS syntax with several additional ways to specify colors.
These extensions are deprecated and should be replaced by the equivalent
standard CSS notions.
The first is a reference to a color defined via a @define-color rule in CSS. The first is a reference to a color defined via a @define-color rule in CSS.
The syntax for @define-color rules is as follows: The syntax for @define-color rules is as follows:
``` ```
@define-color name color @define-color Name Color
``` ```
To refer to the color defined by a @define-color rule, prefix the name with @. To refer to the color defined by a @define-color rule, prefix the name with @.
The standard CSS mechanisms that should be used instead of @define-color are
custom properties, :root and var().
GTK also supports color expressions, which allow colors to be transformed to GTK also supports color expressions, which allow colors to be transformed to
new ones. Color expressions can be nested, providing a rich language to new ones. Color expressions can be nested, providing a rich language to
define colors. Color expressions resemble functions, taking 1 or more colors define colors. Color expressions resemble functions, taking 1 or more colors
and in some cases a number as arguments. and in some cases a number as arguments.
`lighter(color)` `lighter(Color)`
: produces a brighter variant of `color`. : produces a brighter variant of Color
`darker(color)` `darker(Color)`
: produces a darker variant of `color`. : produces a darker variant of Color
`shade(color, number)` `shade(Color, Number)`
: changes the lightness of `color`. The `number` ranges from 0 for black to 2 for white. : changes the lightness of Color. The number ranges from 0 for black to 2 for white.
`alpha(color, number)` `alpha(Color, Number)`
: multiplies the alpha value of `color` by `number` (between 0 and 1). : replaces the alpha value of color with number (between 0 and 1)
`mix(color1, color2, number)` `mix(Color1, Color2, Number)`
: interpolates between the two colors. : interpolates between the two colors
## Images ## Images
@@ -140,7 +119,7 @@ GTK extends the CSS syntax for images and also uses it for specifying icons.
To load a themed icon, use To load a themed icon, use
``` ```
-gtk-icontheme(name) -gtk-icontheme(Name)
``` ```
The specified icon name is used to look up a themed icon, while taking into The specified icon name is used to look up a themed icon, while taking into
@@ -169,14 +148,14 @@ and the
syntax makes this available. -gtk-recolor requires a url as first argument. syntax makes this available. -gtk-recolor requires a url as first argument.
The remaining arguments specify the color palette to use. If the palette is The remaining arguments specify the color palette to use. If the palette is
not explicitly specified, the current value of the -gtk-icon-palette property not explicitly specified, the current value of the -gtk-icon-palette property
is used. is used.
GTK supports scaled rendering on hi-resolution displays. This works best if GTK supports scaled rendering on hi-resolution displays. This works best if
images can specify normal and hi-resolution variants. From CSS, this can be images can specify normal and hi-resolution variants. From CSS, this can be
done with done with
``` ```
-gtk-scaled(image1, image2) -gtk-scaled(Image1, Image2)
``` ```
## GTK CSS Properties ## GTK CSS Properties
+8 -16
View File
@@ -41,10 +41,8 @@ G_BEGIN_DECLS
#ifdef GDK_ARRAY_NULL_TERMINATED #ifdef GDK_ARRAY_NULL_TERMINATED
#define GDK_ARRAY_REAL_SIZE(_size) ((_size) + 1) #define GDK_ARRAY_REAL_SIZE(_size) ((_size) + 1)
#define GDK_ARRAY_MAX_SIZE (G_MAXSIZE / sizeof (_T_) - 1)
#else #else
#define GDK_ARRAY_REAL_SIZE(_size) (_size) #define GDK_ARRAY_REAL_SIZE(_size) (_size)
#define GDK_ARRAY_MAX_SIZE (G_MAXSIZE / sizeof (_T_))
#endif #endif
/* make this readable */ /* make this readable */
@@ -179,23 +177,18 @@ G_GNUC_UNUSED static inline void
gdk_array(reserve) (GdkArray *self, gdk_array(reserve) (GdkArray *self,
gsize n) gsize n)
{ {
gsize new_capacity, size, capacity; gsize new_size, size;
if (G_UNLIKELY (n > GDK_ARRAY_MAX_SIZE)) if (n <= gdk_array(get_capacity) (self))
g_error ("requesting array size of %zu, but maximum size is %zu", n, GDK_ARRAY_MAX_SIZE); return;
capacity = gdk_array(get_capacity) (self);
if (n <= capacity)
return;
size = gdk_array(get_size) (self); size = gdk_array(get_size) (self);
/* capacity * 2 can overflow, that's why we MAX() */ new_size = ((gsize) 1) << g_bit_storage (MAX (GDK_ARRAY_REAL_SIZE (n), 16) - 1);
new_capacity = MAX (GDK_ARRAY_REAL_SIZE (n), capacity * 2);
#ifdef GDK_ARRAY_PREALLOC #ifdef GDK_ARRAY_PREALLOC
if (self->start == self->preallocated) if (self->start == self->preallocated)
{ {
self->start = g_new (_T_, new_capacity); self->start = g_new (_T_, new_size);
memcpy (self->start, self->preallocated, sizeof (_T_) * GDK_ARRAY_REAL_SIZE (size)); memcpy (self->start, self->preallocated, sizeof (_T_) * GDK_ARRAY_REAL_SIZE (size));
} }
else else
@@ -203,15 +196,15 @@ gdk_array(reserve) (GdkArray *self,
#ifdef GDK_ARRAY_NULL_TERMINATED #ifdef GDK_ARRAY_NULL_TERMINATED
if (self->start == NULL) if (self->start == NULL)
{ {
self->start = g_new (_T_, new_capacity); self->start = g_new (_T_, new_size);
*self->start = *(_T_[1]) { 0 }; *self->start = *(_T_[1]) { 0 };
} }
else else
#endif #endif
self->start = g_renew (_T_, self->start, new_capacity); self->start = g_renew (_T_, self->start, new_size);
self->end = self->start + size; self->end = self->start + size;
self->end_allocation = self->start + new_capacity; self->end_allocation = self->start + new_size;
#ifdef GDK_ARRAY_NULL_TERMINATED #ifdef GDK_ARRAY_NULL_TERMINATED
self->end_allocation--; self->end_allocation--;
#endif #endif
@@ -319,7 +312,6 @@ gdk_array(get) (const GdkArray *self,
#undef gdk_array_paste #undef gdk_array_paste
#undef gdk_array #undef gdk_array
#undef GDK_ARRAY_REAL_SIZE #undef GDK_ARRAY_REAL_SIZE
#undef GDK_ARRAY_MAX_SIZE
#undef GDK_ARRAY_BY_VALUE #undef GDK_ARRAY_BY_VALUE
#undef GDK_ARRAY_ELEMENT_TYPE #undef GDK_ARRAY_ELEMENT_TYPE
+14
View File
@@ -522,6 +522,8 @@ gdk_clipboard_get_content (GdkClipboard *clipboard)
* *
* If the clipboard is not local, this function does nothing but report success. * If the clipboard is not local, this function does nothing but report success.
* *
* The @callback must call [method@Gdk.Clipboard.store_finish].
*
* The purpose of this call is to preserve clipboard contents beyond the * The purpose of this call is to preserve clipboard contents beyond the
* lifetime of an application, so this function is typically called on * lifetime of an application, so this function is typically called on
* exit. Depending on the platform, the functionality may not be available * exit. Depending on the platform, the functionality may not be available
@@ -636,6 +638,9 @@ gdk_clipboard_read_internal (GdkClipboard *clipboard,
* Asynchronously requests an input stream to read the @clipboard's * Asynchronously requests an input stream to read the @clipboard's
* contents from. * contents from.
* *
* When the operation is finished @callback will be called. You must then
* call [method@Gdk.Clipboard.read_finish] to get the result of the operation.
*
* The clipboard will choose the most suitable mime type from the given list * The clipboard will choose the most suitable mime type from the given list
* to fulfill the request, preferring the ones listed first. * to fulfill the request, preferring the ones listed first.
*/ */
@@ -829,6 +834,9 @@ gdk_clipboard_read_value_internal (GdkClipboard *clipboard,
* Asynchronously request the @clipboard contents converted to the given * Asynchronously request the @clipboard contents converted to the given
* @type. * @type.
* *
* When the operation is finished @callback will be called. You must then call
* [method@Gdk.Clipboard.read_value_finish] to get the resulting `GValue`.
*
* For local clipboard contents that are available in the given `GType`, * For local clipboard contents that are available in the given `GType`,
* the value will be copied directly. Otherwise, GDK will try to use * the value will be copied directly. Otherwise, GDK will try to use
* [func@content_deserialize_async] to convert the clipboard's data. * [func@content_deserialize_async] to convert the clipboard's data.
@@ -887,6 +895,9 @@ gdk_clipboard_read_value_finish (GdkClipboard *clipboard,
* *
* Asynchronously request the @clipboard contents converted to a `GdkPixbuf`. * Asynchronously request the @clipboard contents converted to a `GdkPixbuf`.
* *
* When the operation is finished @callback will be called. You must then
* call [method@Gdk.Clipboard.read_texture_finish] to get the result.
*
* This is a simple wrapper around [method@Gdk.Clipboard.read_value_async]. * This is a simple wrapper around [method@Gdk.Clipboard.read_value_async].
* Use that function or [method@Gdk.Clipboard.read_async] directly if you * Use that function or [method@Gdk.Clipboard.read_async] directly if you
* need more control over the operation. * need more control over the operation.
@@ -949,6 +960,9 @@ gdk_clipboard_read_texture_finish (GdkClipboard *clipboard,
* *
* Asynchronously request the @clipboard contents converted to a string. * Asynchronously request the @clipboard contents converted to a string.
* *
* When the operation is finished @callback will be called. You must then
* call [method@Gdk.Clipboard.read_text_finish] to get the result.
*
* This is a simple wrapper around [method@Gdk.Clipboard.read_value_async]. * This is a simple wrapper around [method@Gdk.Clipboard.read_value_async].
* Use that function or [method@Gdk.Clipboard.read_async] directly if you * Use that function or [method@Gdk.Clipboard.read_async] directly if you
* need more control over the operation. * need more control over the operation.
+3
View File
@@ -540,6 +540,9 @@ deserialize_not_found (GdkContentDeserializer *deserializer)
* *
* The default I/O priority is %G_PRIORITY_DEFAULT (i.e. 0), and lower numbers * The default I/O priority is %G_PRIORITY_DEFAULT (i.e. 0), and lower numbers
* indicate a higher priority. * indicate a higher priority.
*
* When the operation is finished, @callback will be called. You must then
* call [func@Gdk.content_deserialize_finish] to get the result of the operation.
*/ */
void void
gdk_content_deserialize_async (GInputStream *stream, gdk_content_deserialize_async (GInputStream *stream,
+4
View File
@@ -279,6 +279,10 @@ gdk_content_provider_content_changed (GdkContentProvider *provider)
* Asynchronously writes the contents of @provider to @stream in the given * Asynchronously writes the contents of @provider to @stream in the given
* @mime_type. * @mime_type.
* *
* When the operation is finished @callback will be called. You must then call
* [method@Gdk.ContentProvider.write_mime_type_finish] to get the result
* of the operation.
*
* The given mime type does not need to be listed in the formats returned by * The given mime type does not need to be listed in the formats returned by
* [method@Gdk.ContentProvider.ref_formats]. However, if the given `GType` is * [method@Gdk.ContentProvider.ref_formats]. However, if the given `GType` is
* not supported, `G_IO_ERROR_NOT_SUPPORTED` will be reported. * not supported, `G_IO_ERROR_NOT_SUPPORTED` will be reported.
+3
View File
@@ -546,6 +546,9 @@ serialize_not_found (GdkContentSerializer *serializer)
* *
* The default I/O priority is %G_PRIORITY_DEFAULT (i.e. 0), and lower numbers * The default I/O priority is %G_PRIORITY_DEFAULT (i.e. 0), and lower numbers
* indicate a higher priority. * indicate a higher priority.
*
* When the operation is finished, @callback will be called. You must then
* call [func@Gdk.content_serialize_finish] to get the result of the operation.
*/ */
void void
gdk_content_serialize_async (GOutputStream *stream, gdk_content_serialize_async (GOutputStream *stream,
+6 -2
View File
@@ -134,7 +134,7 @@ gdk_drop_read_local_async (GdkDrop *self,
g_object_get (priv->drag, "content", &content, NULL); g_object_get (priv->drag, "content", &content, NULL);
content_formats = gdk_content_provider_ref_formats (content); content_formats = gdk_content_provider_ref_formats (content);
g_object_unref (content); g_object_unref (content);
content_formats = gdk_content_formats_union_serialize_mime_types (content_formats); content_formats = gdk_content_formats_union_serialize_mime_types (content_formats);
mime_type = gdk_content_formats_match_mime_type (content_formats, formats); mime_type = gdk_content_formats_match_mime_type (content_formats, formats);
@@ -784,7 +784,7 @@ gdk_drop_read_value_internal (GdkDrop *self,
GdkContentFormats *formats; GdkContentFormats *formats;
GValue *value; GValue *value;
GTask *task; GTask *task;
g_return_if_fail (priv->state != GDK_DROP_STATE_FINISHED); g_return_if_fail (priv->state != GDK_DROP_STATE_FINISHED);
task = g_task_new (self, cancellable, callback, user_data); task = g_task_new (self, cancellable, callback, user_data);
@@ -849,6 +849,10 @@ gdk_drop_read_value_internal (GdkDrop *self,
* Asynchronously request the drag operation's contents converted * Asynchronously request the drag operation's contents converted
* to the given @type. * to the given @type.
* *
* When the operation is finished @callback will be called. You must
* then call [method@Gdk.Drop.read_value_finish] to get the resulting
* `GValue`.
*
* For local drag-and-drop operations that are available in the given * For local drag-and-drop operations that are available in the given
* `GType`, the value will be copied directly. Otherwise, GDK will * `GType`, the value will be copied directly. Otherwise, GDK will
* try to use [func@Gdk.content_deserialize_async] to convert the data. * try to use [func@Gdk.content_deserialize_async] to convert the data.
+3
View File
@@ -767,6 +767,9 @@ gdk_toplevel_titlebar_gesture (GdkToplevel *toplevel,
* This function asynchronously obtains a handle for a toplevel surface * This function asynchronously obtains a handle for a toplevel surface
* that can be passed to other processes. * that can be passed to other processes.
* *
* When a handle has been obtained, @callback will be called, and can
* receive the handle via [method@Gdk.Toplevel.export_handle_finish].
*
* It is an error to call this function on a surface that is already * It is an error to call this function on a surface that is already
* exported. * exported.
* *
+1 -3
View File
@@ -607,8 +607,7 @@ physical_device_check_features (VkPhysicalDevice device)
features |= GDK_VULKAN_FEATURE_YCBCR; features |= GDK_VULKAN_FEATURE_YCBCR;
if (physical_device_supports_extension (device, VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME) && if (physical_device_supports_extension (device, VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME) &&
physical_device_supports_extension (device, VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME) && physical_device_supports_extension (device, VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME))
physical_device_supports_extension (device, VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME))
features |= GDK_VULKAN_FEATURE_DMABUF; features |= GDK_VULKAN_FEATURE_DMABUF;
if (physical_device_supports_extension (device, VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME)) if (physical_device_supports_extension (device, VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME))
@@ -1518,7 +1517,6 @@ gdk_display_create_vulkan_device (GdkDisplay *display,
g_ptr_array_add (device_extensions, (gpointer) VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME); g_ptr_array_add (device_extensions, (gpointer) VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME);
g_ptr_array_add (device_extensions, (gpointer) VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME); g_ptr_array_add (device_extensions, (gpointer) VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME);
g_ptr_array_add (device_extensions, (gpointer) VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME);
g_ptr_array_add (device_extensions, (gpointer) VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME); g_ptr_array_add (device_extensions, (gpointer) VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME);
g_ptr_array_add (device_extensions, (gpointer) VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME); g_ptr_array_add (device_extensions, (gpointer) VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME);
+2 -2
View File
@@ -96,12 +96,12 @@ _gdk_macos_drag_surface_constructed (GObject *object)
defer:NO defer:NO
screen:screen]; screen:screen];
_gdk_macos_surface_set_native (self, window);
[window setOpaque:NO]; [window setOpaque:NO];
[window setBackgroundColor:[NSColor clearColor]]; [window setBackgroundColor:[NSColor clearColor]];
[window setDecorated:NO]; [window setDecorated:NO];
_gdk_macos_surface_set_native (self, window);
frame_clock = _gdk_frame_clock_idle_new (); frame_clock = _gdk_frame_clock_idle_new ();
gdk_surface_set_frame_clock (surface, frame_clock); gdk_surface_set_frame_clock (surface, frame_clock);
g_object_unref (frame_clock); g_object_unref (frame_clock);
+3 -13
View File
@@ -52,7 +52,6 @@ gdk_macos_popup_surface_layout (GdkMacosPopupSurface *self,
GdkRectangle bounds; GdkRectangle bounds;
GdkRectangle final_rect; GdkRectangle final_rect;
int x, y; int x, y;
int shadow_left, shadow_right, shadow_top, shadow_bottom;
g_assert (GDK_IS_MACOS_POPUP_SURFACE (self)); g_assert (GDK_IS_MACOS_POPUP_SURFACE (self));
g_assert (layout != NULL); g_assert (layout != NULL);
@@ -69,19 +68,10 @@ gdk_macos_popup_surface_layout (GdkMacosPopupSurface *self,
monitor = _gdk_macos_surface_get_best_monitor (GDK_MACOS_SURFACE (self)); monitor = _gdk_macos_surface_get_best_monitor (GDK_MACOS_SURFACE (self));
gdk_macos_monitor_get_workarea (monitor, &bounds); gdk_macos_monitor_get_workarea (monitor, &bounds);
gdk_popup_layout_get_shadow_width (layout,
&shadow_left,
&shadow_right,
&shadow_top,
&shadow_bottom);
gdk_surface_layout_popup_helper (GDK_SURFACE (self), gdk_surface_layout_popup_helper (GDK_SURFACE (self),
width, width,
height, height,
shadow_left, 0, 0, 0, 0, /* shadow-left/right/top/bottom */
shadow_right,
shadow_top,
shadow_bottom,
monitor, monitor,
&bounds, &bounds,
self->layout, self->layout,
@@ -316,14 +306,14 @@ _gdk_macos_popup_surface_constructed (GObject *object)
defer:NO defer:NO
screen:screen]; screen:screen];
_gdk_macos_surface_set_native (GDK_MACOS_SURFACE (self), window);
[window setOpaque:NO]; [window setOpaque:NO];
[window setBackgroundColor:[NSColor clearColor]]; [window setBackgroundColor:[NSColor clearColor]];
[window setDecorated:NO]; [window setDecorated:NO];
[window setExcludedFromWindowsMenu:YES]; [window setExcludedFromWindowsMenu:YES];
[window setLevel:NSPopUpMenuWindowLevel]; [window setLevel:NSPopUpMenuWindowLevel];
_gdk_macos_surface_set_native (GDK_MACOS_SURFACE (self), window);
gdk_surface_set_frame_clock (surface, gdk_surface_get_frame_clock (surface->parent)); gdk_surface_set_frame_clock (surface, gdk_surface_get_frame_clock (surface->parent));
GDK_END_MACOS_ALLOC_POOL; GDK_END_MACOS_ALLOC_POOL;
+2 -2
View File
@@ -591,11 +591,11 @@ _gdk_macos_toplevel_surface_constructed (GObject *object)
defer:NO defer:NO
screen:screen]; screen:screen];
_gdk_macos_surface_set_native (GDK_MACOS_SURFACE (self), window);
/* Allow NSWindow to go fullscreen */ /* Allow NSWindow to go fullscreen */
[window setCollectionBehavior:NSWindowCollectionBehaviorFullScreenPrimary]; [window setCollectionBehavior:NSWindowCollectionBehaviorFullScreenPrimary];
_gdk_macos_surface_set_native (GDK_MACOS_SURFACE (self), window);
frame_clock = _gdk_frame_clock_idle_new (); frame_clock = _gdk_frame_clock_idle_new ();
gdk_surface_set_frame_clock (surface, frame_clock); gdk_surface_set_frame_clock (surface, frame_clock);
g_object_unref (frame_clock); g_object_unref (frame_clock);
+1 -1
View File
@@ -128,8 +128,8 @@ install_headers(gdk_deprecated_headers, subdir: 'gtk-4.0/gdk/deprecated')
gdk_sources = gdk_public_sources + gdk_deprecated_sources gdk_sources = gdk_public_sources + gdk_deprecated_sources
gdk_private_h_sources = files([ gdk_private_h_sources = files([
'gdkdevicetoolprivate.h',
'gdkeventsprivate.h', 'gdkeventsprivate.h',
'gdkdevicetoolprivate.h',
'gdkhslaprivate.h', 'gdkhslaprivate.h',
'gdkmonitorprivate.h', 'gdkmonitorprivate.h',
'gdkseatdefaultprivate.h', 'gdkseatdefaultprivate.h',
+38 -37
View File
@@ -165,29 +165,25 @@ _gdk_wayland_cursor_get_buffer (GdkWaylandDisplay *display,
double *scale) double *scale)
{ {
GdkTexture *texture; GdkTexture *texture;
int desired_scale_factor;
desired_scale_factor = (int) ceil (desired_scale);
if (gdk_cursor_get_name (cursor)) if (gdk_cursor_get_name (cursor))
{ {
struct wl_cursor *c; struct wl_cursor *c;
int scale_factor;
if (g_str_equal (gdk_cursor_get_name (cursor), "none")) if (g_str_equal (gdk_cursor_get_name (cursor), "none"))
{ goto none;
*hotspot_x = *hotspot_y = 0;
*width = *height = 0;
*scale = 1;
return NULL;
}
scale_factor = (int) ceil (desired_scale);
c = gdk_wayland_cursor_load_for_name (display, c = gdk_wayland_cursor_load_for_name (display,
display->cursor_theme, _gdk_wayland_display_get_cursor_theme (display),
scale_factor, desired_scale_factor,
gdk_cursor_get_name (cursor)); gdk_cursor_get_name (cursor));
if (c && c->image_count > 0) if (c && c->image_count > 0)
{ {
struct wl_cursor_image *image; struct wl_cursor_image *image;
int cursor_scale;
if (image_index >= c->image_count) if (image_index >= c->image_count)
{ {
@@ -199,23 +195,23 @@ _gdk_wayland_cursor_get_buffer (GdkWaylandDisplay *display,
image = c->images[image_index]; image = c->images[image_index];
*width = display->cursor_theme_size; cursor_scale = desired_scale_factor;
*height = display->cursor_theme_size; if ((image->width % cursor_scale != 0) ||
*scale = image->width / (double) *width; (image->height % cursor_scale != 0))
*hotspot_x = image->hotspot_x / scale_factor;
*hotspot_y = image->hotspot_y / scale_factor;
if (*scale != scale_factor && !use_viewporter)
{ {
g_warning (G_STRLOC " cursor image size (%d) not an integer " g_warning (G_STRLOC " cursor image size (%dx%d) not an integer "
"multiple of theme size (%d)", image->width, *width); "multiple of scale (%d)", image->width, image->height,
*width = image->width; cursor_scale);
*height = image->height; cursor_scale = 1;
*hotspot_x = image->hotspot_x;
*hotspot_y = image->hotspot_y;
*scale = 1;
} }
*hotspot_x = image->hotspot_x / cursor_scale;
*hotspot_y = image->hotspot_y / cursor_scale;
*width = image->width / cursor_scale;
*height = image->height / cursor_scale;
*scale = cursor_scale;
return wl_cursor_image_get_buffer (image); return wl_cursor_image_get_buffer (image);
} }
} }
@@ -261,7 +257,7 @@ from_texture:
else else
{ {
if (!use_viewporter) if (!use_viewporter)
*scale = ceil (desired_scale); *scale = desired_scale_factor;
else else
*scale = desired_scale; *scale = desired_scale;
@@ -298,23 +294,28 @@ from_texture:
} }
if (gdk_cursor_get_fallback (cursor)) if (gdk_cursor_get_fallback (cursor))
{ return _gdk_wayland_cursor_get_buffer (display,
return _gdk_wayland_cursor_get_buffer (display, gdk_cursor_get_fallback (cursor),
gdk_cursor_get_fallback (cursor), desired_scale,
desired_scale, use_viewporter,
use_viewporter, image_index,
image_index, hotspot_x, hotspot_y,
hotspot_x, hotspot_y, width, height,
width, height, scale);
scale);
}
else else
{ {
texture = gdk_texture_new_from_resource ("/org/gtk/libgdk/cursor/default"); texture = gdk_texture_new_from_resource ("/org/gtk/libgdk/cursor/default");
goto from_texture; goto from_texture;
} }
g_assert_not_reached (); none:
*hotspot_x = 0;
*hotspot_y = 0;
*width = 0;
*height = 0;
*scale = 1;
return NULL;
} }
guint guint
-1
View File
@@ -37,7 +37,6 @@ static struct {
{ "appstarting", IDC_APPSTARTING }, { "appstarting", IDC_APPSTARTING },
{ "arrow", IDC_ARROW }, { "arrow", IDC_ARROW },
{ "cross", IDC_CROSS }, { "cross", IDC_CROSS },
{ "dnd-move", IDC_ARROW },
{ "hand", IDC_HAND }, { "hand", IDC_HAND },
{ "help", IDC_HELP }, { "help", IDC_HELP },
{ "ibeam", IDC_IBEAM }, { "ibeam", IDC_IBEAM },
+5
View File
@@ -1776,6 +1776,11 @@ _gdk_x11_display_is_root_window (GdkDisplay *display,
return GDK_SCREEN_XROOTWIN (display_x11->screen) == xroot_window; return GDK_SCREEN_XROOTWIN (display_x11->screen) == xroot_window;
} }
struct XPointerUngrabInfo {
GdkDisplay *display;
guint32 time;
};
static void static void
device_grab_update_callback (GdkDisplay *display, device_grab_update_callback (GdkDisplay *display,
gpointer data, gpointer data,
+1 -4
View File
@@ -70,10 +70,7 @@ gsk_gl_frame_cleanup (GskGpuFrame *frame)
if (self->sync) if (self->sync)
{ {
glClientWaitSync (self->sync, 0, -1); glClientWaitSync (self->sync, 0, -1);
g_clear_pointer (&self->sync, glDeleteSync);
/* can't use g_clear_pointer() on glDeleteSync(), see MR !7294 */
glDeleteSync (self->sync);
self->sync = NULL;
} }
self->next_texture_slot = 0; self->next_texture_slot = 0;
+1 -7
View File
@@ -249,13 +249,7 @@ gsk_gl_texture_data_free (gpointer user_data)
gdk_gl_context_make_current (data->context); gdk_gl_context_make_current (data->context);
/* can't use g_clear_pointer() on glDeleteSync(), see MR !7294 */ g_clear_pointer (&data->sync, glDeleteSync);
if (data->sync)
{
glDeleteSync (data->sync);
data->sync = NULL;
}
glDeleteTextures (1, &data->texture_id); glDeleteTextures (1, &data->texture_id);
g_object_unref (data->context); g_object_unref (data->context);
+1 -1
View File
@@ -1261,7 +1261,7 @@ gsk_vulkan_device_find_allocator (GskVulkanDevice *self,
g_assert (found < properties.memoryTypeCount); g_assert (found < properties.memoryTypeCount);
return gsk_vulkan_allocator_ref (gsk_vulkan_device_get_allocator (self, found, &properties.memoryTypes[found])); return gsk_vulkan_allocator_ref (gsk_vulkan_device_get_allocator (self, i, &properties.memoryTypes[i]));
} }
GskVulkanAllocator * GskVulkanAllocator *
-4
View File
@@ -6397,10 +6397,6 @@ gsk_mask_node_draw (GskRenderNode *node,
graphene_matrix_t color_matrix; graphene_matrix_t color_matrix;
graphene_vec4_t color_offset; graphene_vec4_t color_offset;
/* clip so the push_group() creates a smaller surface */
gsk_cairo_rectangle (cr, &node->bounds);
cairo_clip (cr);
if (has_empty_clip (cr)) if (has_empty_clip (cr))
return; return;
-12
View File
@@ -530,15 +530,6 @@ handle_accessible_method (GDBusConnection *connection,
g_variant_builder_open (&builder, G_VARIANT_TYPE ("a{ss}")); g_variant_builder_open (&builder, G_VARIANT_TYPE ("a{ss}"));
g_variant_builder_add (&builder, "{ss}", "toolkit", "GTK"); g_variant_builder_add (&builder, "{ss}", "toolkit", "GTK");
if (gtk_at_context_has_accessible_property (GTK_AT_CONTEXT (self), GTK_ACCESSIBLE_PROPERTY_LEVEL))
{
GtkAccessibleValue *value = gtk_at_context_get_accessible_property (GTK_AT_CONTEXT (self),
GTK_ACCESSIBLE_PROPERTY_LEVEL);
char *level = g_strdup_printf ("%d", gtk_int_accessible_value_get (value));
g_variant_builder_add (&builder, "{ss}", "level", level);
g_free (level);
}
if (gtk_at_context_has_accessible_property (GTK_AT_CONTEXT (self), GTK_ACCESSIBLE_PROPERTY_PLACEHOLDER)) if (gtk_at_context_has_accessible_property (GTK_AT_CONTEXT (self), GTK_ACCESSIBLE_PROPERTY_PLACEHOLDER))
{ {
GtkAccessibleValue *value; GtkAccessibleValue *value;
@@ -1266,13 +1257,10 @@ gtk_at_spi_context_child_change (GtkATContext *ctx,
} }
if (change & GTK_ACCESSIBLE_CHILD_CHANGE_ADDED) if (change & GTK_ACCESSIBLE_CHILD_CHANGE_ADDED)
{
gtk_at_context_realize (child_context);
emit_children_changed (self, emit_children_changed (self,
GTK_AT_SPI_CONTEXT (child_context), GTK_AT_SPI_CONTEXT (child_context),
idx, idx,
GTK_ACCESSIBLE_CHILD_STATE_ADDED); GTK_ACCESSIBLE_CHILD_STATE_ADDED);
}
else if (change & GTK_ACCESSIBLE_CHILD_CHANGE_REMOVED) else if (change & GTK_ACCESSIBLE_CHILD_CHANGE_REMOVED)
emit_children_changed (self, emit_children_changed (self,
GTK_AT_SPI_CONTEXT (child_context), GTK_AT_SPI_CONTEXT (child_context),
+27 -61
View File
@@ -26,11 +26,6 @@
#include "gtkcsserror.h" #include "gtkcsserror.h"
#include "gtkcsslocationprivate.h" #include "gtkcsslocationprivate.h"
/* We cannot include gtkdebug.h, so we must keep this in sync */
extern unsigned int gtk_get_debug_flags (void);
#define DEBUG_CSS (1 << 20)
#define DEBUG_CHECK_CSS ((gtk_get_debug_flags () & DEBUG_CSS) != 0)
static void clear_ref (GtkCssVariableValueReference *ref); static void clear_ref (GtkCssVariableValueReference *ref);
#define GDK_ARRAY_NAME gtk_css_parser_references #define GDK_ARRAY_NAME gtk_css_parser_references
@@ -54,7 +49,7 @@ struct _GtkCssParserBlock
#define GDK_ARRAY_NAME gtk_css_parser_blocks #define GDK_ARRAY_NAME gtk_css_parser_blocks
#define GDK_ARRAY_TYPE_NAME GtkCssParserBlocks #define GDK_ARRAY_TYPE_NAME GtkCssParserBlocks
#define GDK_ARRAY_ELEMENT_TYPE GtkCssParserBlock #define GDK_ARRAY_ELEMENT_TYPE GtkCssParserBlock
#define GDK_ARRAY_PREALLOC 12 #define GDK_ARRAY_PREALLOC 32
#define GDK_ARRAY_NO_MEMSET 1 #define GDK_ARRAY_NO_MEMSET 1
#include "gdk/gdkarrayimpl.c" #include "gdk/gdkarrayimpl.c"
@@ -631,7 +626,7 @@ void
gtk_css_parser_skip (GtkCssParser *self) gtk_css_parser_skip (GtkCssParser *self)
{ {
const GtkCssToken *token; const GtkCssToken *token;
token = gtk_css_parser_get_token (self); token = gtk_css_parser_get_token (self);
if (gtk_css_token_is_preserved (token, NULL)) if (gtk_css_token_is_preserved (token, NULL))
{ {
@@ -664,7 +659,7 @@ gtk_css_parser_skip_until (GtkCssParser *self,
GtkCssTokenType token_type) GtkCssTokenType token_type)
{ {
const GtkCssToken *token; const GtkCssToken *token;
for (token = gtk_css_parser_get_token (self); for (token = gtk_css_parser_get_token (self);
!gtk_css_token_is (token, token_type) && !gtk_css_token_is (token, token_type) &&
!gtk_css_token_is (token, GTK_CSS_TOKEN_EOF); !gtk_css_token_is (token, GTK_CSS_TOKEN_EOF);
@@ -817,29 +812,6 @@ gtk_css_parser_warn_syntax (GtkCssParser *self,
va_end (args); va_end (args);
} }
void
gtk_css_parser_warn_deprecated (GtkCssParser *self,
const char *format,
...)
{
if (DEBUG_CHECK_CSS)
{
va_list args;
GError *error;
va_start (args, format);
error = g_error_new_valist (GTK_CSS_PARSER_WARNING,
GTK_CSS_PARSER_WARNING_DEPRECATED,
format, args);
gtk_css_parser_emit_error (self,
gtk_css_parser_get_start_location (self),
gtk_css_parser_get_end_location (self),
error);
g_error_free (error);
va_end (args);
}
}
gboolean gboolean
gtk_css_parser_consume_function (GtkCssParser *self, gtk_css_parser_consume_function (GtkCssParser *self,
guint min_args, guint min_args,
@@ -1161,7 +1133,7 @@ gtk_css_parser_parse_url_arg (GtkCssParser *parser,
*out_url = gtk_css_parser_consume_string (parser); *out_url = gtk_css_parser_consume_string (parser);
if (*out_url == NULL) if (*out_url == NULL)
return 0; return 0;
return 1; return 1;
} }
@@ -1207,7 +1179,7 @@ gtk_css_parser_consume_url (GtkCssParser *self)
gtk_css_parser_error_syntax (self, "Expected a URL"); gtk_css_parser_error_syntax (self, "Expected a URL");
return NULL; return NULL;
} }
return url; return url;
} }
@@ -1328,9 +1300,6 @@ gtk_css_parser_has_references (GtkCssParser *self)
gboolean ret = FALSE; gboolean ret = FALSE;
int inner_blocks = 0, i; int inner_blocks = 0, i;
/* We don't want gtk_css_parser_ensure_token to expand references on us here */
g_assert (self->n_refs == 0);
gtk_css_tokenizer_save (tokenizer); gtk_css_tokenizer_save (tokenizer);
do { do {
@@ -1346,7 +1315,7 @@ gtk_css_parser_has_references (GtkCssParser *self)
if (gtk_css_token_is (token, GTK_CSS_TOKEN_CLOSE_PARENS) || if (gtk_css_token_is (token, GTK_CSS_TOKEN_CLOSE_PARENS) ||
gtk_css_token_is (token, GTK_CSS_TOKEN_CLOSE_SQUARE)) gtk_css_token_is (token, GTK_CSS_TOKEN_CLOSE_SQUARE))
{ {
goto done; goto error;
} }
} }
@@ -1369,7 +1338,7 @@ gtk_css_parser_has_references (GtkCssParser *self)
inner_blocks++; inner_blocks++;
gtk_css_parser_start_block (self); gtk_css_parser_start_block (self);
if (is_var) if (!ret && is_var)
{ {
token = gtk_css_parser_get_token (self); token = gtk_css_parser_get_token (self);
@@ -1377,18 +1346,18 @@ gtk_css_parser_has_references (GtkCssParser *self)
{ {
const char *var_name = gtk_css_token_get_string (token); const char *var_name = gtk_css_token_get_string (token);
if (strlen (var_name) < 3 || var_name[0] != '-' || var_name[1] != '-') if (var_name[0] != '-' || var_name[1] != '-')
goto done; goto error;
gtk_css_parser_consume_token (self); gtk_css_parser_consume_token (self);
if (!gtk_css_parser_has_token (self, GTK_CSS_TOKEN_EOF) && if (!gtk_css_parser_has_token (self, GTK_CSS_TOKEN_EOF) &&
!gtk_css_parser_has_token (self, GTK_CSS_TOKEN_COMMA)) !gtk_css_parser_has_token (self, GTK_CSS_TOKEN_COMMA))
goto done; {
goto error;
}
ret = TRUE; ret = TRUE;
/* We got our answer. Now get it out as fast as possible! */
goto done;
} }
} }
} }
@@ -1396,7 +1365,18 @@ gtk_css_parser_has_references (GtkCssParser *self)
while (!gtk_css_parser_has_token (self, GTK_CSS_TOKEN_SEMICOLON) && while (!gtk_css_parser_has_token (self, GTK_CSS_TOKEN_SEMICOLON) &&
!gtk_css_parser_has_token (self, GTK_CSS_TOKEN_CLOSE_CURLY)); !gtk_css_parser_has_token (self, GTK_CSS_TOKEN_CLOSE_CURLY));
done: if (inner_blocks > 0)
goto error;
g_assert (tokenizer == get_tokenizer (self));
gtk_css_tokenizer_restore (tokenizer);
self->location = *gtk_css_tokenizer_get_location (tokenizer);
gtk_css_tokenizer_read_token (tokenizer, &self->token, NULL);
return ret;
error:
for (i = 0; i < inner_blocks; i++) for (i = 0; i < inner_blocks; i++)
gtk_css_parser_end_block (self); gtk_css_parser_end_block (self);
@@ -1406,7 +1386,7 @@ done:
self->location = *gtk_css_tokenizer_get_location (tokenizer); self->location = *gtk_css_tokenizer_get_location (tokenizer);
gtk_css_tokenizer_read_token (tokenizer, &self->token, NULL); gtk_css_tokenizer_read_token (tokenizer, &self->token, NULL);
return ret; return FALSE;
} }
static void static void
@@ -1502,9 +1482,9 @@ gtk_css_parser_parse_value_into_token_stream (GtkCssParser *self)
GtkCssVariableValueReference ref; GtkCssVariableValueReference ref;
char *var_name = g_strdup (gtk_css_token_get_string (token)); char *var_name = g_strdup (gtk_css_token_get_string (token));
if (strlen (var_name) < 3 || var_name[0] != '-' || var_name[1] != '-') if (var_name[0] != '-' || var_name[1] != '-')
{ {
gtk_css_parser_error_syntax (self, "Invalid variable name: %s", var_name); gtk_css_parser_error_value (self, "Invalid variable name: %s", var_name);
g_free (var_name); g_free (var_name);
goto error; goto error;
} }
@@ -1547,20 +1527,6 @@ gtk_css_parser_parse_value_into_token_stream (GtkCssParser *self)
gtk_css_parser_references_append (&refs, &ref); gtk_css_parser_references_append (&refs, &ref);
} }
else
{
if (gtk_css_token_is (token, GTK_CSS_TOKEN_EOF))
{
gtk_css_parser_error_syntax (self, "Missing variable name");
}
else
{
char *s = gtk_css_token_to_string (token);
gtk_css_parser_error_syntax (self, "Expected a variable name, not %s", s);
g_free (s);
}
goto error;
}
} }
} }
} }
-3
View File
@@ -120,9 +120,6 @@ void gtk_css_parser_warn (GtkCssParser
void gtk_css_parser_warn_syntax (GtkCssParser *self, void gtk_css_parser_warn_syntax (GtkCssParser *self,
const char *format, const char *format,
...) G_GNUC_PRINTF(2, 3); ...) G_GNUC_PRINTF(2, 3);
void gtk_css_parser_warn_deprecated (GtkCssParser *self,
const char *format,
...) G_GNUC_PRINTF(2, 3);
gboolean gtk_css_parser_has_token (GtkCssParser *self, gboolean gtk_css_parser_has_token (GtkCssParser *self,
+1 -1
View File
@@ -253,7 +253,7 @@ gtk_cell_renderer_spinner_update_size (GtkCellRendererSpinner *cell,
node = gtk_style_context_get_node (context); node = gtk_style_context_get_node (context);
gtk_icon_size_set_style_classes (node, priv->icon_size); gtk_icon_size_set_style_classes (node, priv->icon_size);
style = gtk_css_node_get_style (node); style = gtk_css_node_get_style (node);
priv->size = gtk_css_number_value_get (style->icon->icon_size, 100); priv->size = _gtk_css_number_value_get (style->icon->icon_size, 100);
gtk_style_context_restore (context); gtk_style_context_restore (context);
} }
+1 -1
View File
@@ -370,7 +370,7 @@ static int
calc_indicator_size (GtkStyleContext *context) calc_indicator_size (GtkStyleContext *context)
{ {
GtkCssStyle *style = gtk_style_context_lookup_style (context); GtkCssStyle *style = gtk_style_context_lookup_style (context);
return gtk_css_number_value_get (style->icon->icon_size, 100); return _gtk_css_number_value_get (style->icon->icon_size, 100);
} }
static void static void
+1 -1
View File
@@ -62,7 +62,7 @@ struct _GtkMessageDialog
* *
* > Please note that %GTK_BUTTONS_OK, %GTK_BUTTONS_YES_NO * > Please note that %GTK_BUTTONS_OK, %GTK_BUTTONS_YES_NO
* > and %GTK_BUTTONS_OK_CANCEL are discouraged by the * > and %GTK_BUTTONS_OK_CANCEL are discouraged by the
* > [GNOME Human Interface Guidelines](https://developer.gnome.org/hig/). * > [GNOME Human Interface Guidelines](http://library.gnome.org/devel/hig-book/stable/).
*/ */
typedef enum typedef enum
{ {
+3 -2
View File
@@ -99,6 +99,7 @@ window_handle_exported (GtkWindow *window,
* a given uri. * a given uri.
* *
* The @callback will be called when the launch is completed. * The @callback will be called when the launch is completed.
* It should call gtk_show_uri_full_finish() to obtain the result.
* *
* This is the recommended call to be used as it passes information * This is the recommended call to be used as it passes information
* necessary for sandbox helpers to parent their dialogs properly. * necessary for sandbox helpers to parent their dialogs properly.
@@ -152,8 +153,8 @@ gtk_show_uri_full (GtkWindow *parent,
* Returns: %TRUE if the URI was shown successfully. * Returns: %TRUE if the URI was shown successfully.
* Otherwise, %FALSE is returned and @error is set * Otherwise, %FALSE is returned and @error is set
* *
* Deprecated: 4.10: Use [method@Gtk.FileLauncher.launch] or * Deprecated: 4.10: Use [method@Gtk.FileLauncher.launch_finish] or
* [method@Gtk.UriLauncher.launch] instead * [method@Gtk.UriLauncher.launch_finish] instead
*/ */
gboolean gboolean
gtk_show_uri_full_finish (GtkWindow *parent, gtk_show_uri_full_finish (GtkWindow *parent,
+17 -17
View File
@@ -778,15 +778,15 @@ gtk_style_context_resolve_color (GtkStyleContext *context,
g_return_val_if_fail (color != NULL, FALSE); g_return_val_if_fail (color != NULL, FALSE);
g_return_val_if_fail (result != NULL, FALSE); g_return_val_if_fail (result != NULL, FALSE);
val = gtk_css_color_value_resolve (color, val = _gtk_css_color_value_resolve (color,
GTK_STYLE_PROVIDER (priv->cascade), GTK_STYLE_PROVIDER (priv->cascade),
_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_COLOR)); _gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_COLOR),
NULL);
if (val == NULL) if (val == NULL)
return FALSE; return FALSE;
*result = *gtk_css_color_value_get_rgba (val); *result = *gtk_css_color_value_get_rgba (val);
gtk_css_value_unref (val); _gtk_css_value_unref (val);
return TRUE; return TRUE;
} }
@@ -860,10 +860,10 @@ gtk_style_context_get_border (GtkStyleContext *context,
style = gtk_style_context_lookup_style (context); style = gtk_style_context_lookup_style (context);
border->top = round (gtk_css_number_value_get (style->border->border_top_width, 100)); border->top = round (_gtk_css_number_value_get (style->border->border_top_width, 100));
border->right = round (gtk_css_number_value_get (style->border->border_right_width, 100)); border->right = round (_gtk_css_number_value_get (style->border->border_right_width, 100));
border->bottom = round (gtk_css_number_value_get (style->border->border_bottom_width, 100)); border->bottom = round (_gtk_css_number_value_get (style->border->border_bottom_width, 100));
border->left = round (gtk_css_number_value_get (style->border->border_left_width, 100)); border->left = round (_gtk_css_number_value_get (style->border->border_left_width, 100));
} }
/** /**
@@ -886,10 +886,10 @@ gtk_style_context_get_padding (GtkStyleContext *context,
style = gtk_style_context_lookup_style (context); style = gtk_style_context_lookup_style (context);
padding->top = round (gtk_css_number_value_get (style->size->padding_top, 100)); padding->top = round (_gtk_css_number_value_get (style->size->padding_top, 100));
padding->right = round (gtk_css_number_value_get (style->size->padding_right, 100)); padding->right = round (_gtk_css_number_value_get (style->size->padding_right, 100));
padding->bottom = round (gtk_css_number_value_get (style->size->padding_bottom, 100)); padding->bottom = round (_gtk_css_number_value_get (style->size->padding_bottom, 100));
padding->left = round (gtk_css_number_value_get (style->size->padding_left, 100)); padding->left = round (_gtk_css_number_value_get (style->size->padding_left, 100));
} }
/** /**
@@ -912,10 +912,10 @@ gtk_style_context_get_margin (GtkStyleContext *context,
style = gtk_style_context_lookup_style (context); style = gtk_style_context_lookup_style (context);
margin->top = round (gtk_css_number_value_get (style->size->margin_top, 100)); margin->top = round (_gtk_css_number_value_get (style->size->margin_top, 100));
margin->right = round (gtk_css_number_value_get (style->size->margin_right, 100)); margin->right = round (_gtk_css_number_value_get (style->size->margin_right, 100));
margin->bottom = round (gtk_css_number_value_get (style->size->margin_bottom, 100)); margin->bottom = round (_gtk_css_number_value_get (style->size->margin_bottom, 100));
margin->left = round (gtk_css_number_value_get (style->size->margin_left, 100)); margin->left = round (_gtk_css_number_value_get (style->size->margin_left, 100));
} }
void void
+3 -3
View File
@@ -2691,8 +2691,8 @@ gtk_tree_view_get_expander_size (GtkTreeView *tree_view)
gtk_style_context_add_class (context, "expander"); gtk_style_context_add_class (context, "expander");
style = gtk_style_context_lookup_style (context); style = gtk_style_context_lookup_style (context);
min_width = gtk_css_number_value_get (style->size->min_width, 100); min_width = _gtk_css_number_value_get (style->size->min_width, 100);
min_height = gtk_css_number_value_get (style->size->min_height, 100); min_height = _gtk_css_number_value_get (style->size->min_height, 100);
gtk_style_context_restore (context); gtk_style_context_restore (context);
@@ -5521,7 +5521,7 @@ get_separator_height (GtkTreeView *tree_view)
gtk_style_context_add_class (context, "separator"); gtk_style_context_add_class (context, "separator");
style = gtk_style_context_lookup_style (context); style = gtk_style_context_lookup_style (context);
d = gtk_css_number_value_get (style->size->min_height, 100); d = _gtk_css_number_value_get (style->size->min_height, 100);
if (d < 1) if (d < 1)
min_size = ceil (d); min_size = ceil (d);
+6 -1
View File
@@ -33,7 +33,8 @@
* are needed to present a message to the user. * are needed to present a message to the user.
* *
* The message is shown with the [method@Gtk.AlertDialog.choose] * The message is shown with the [method@Gtk.AlertDialog.choose]
* function. * function. This API follows the GIO async pattern, and the result can
* be obtained by calling [method@Gtk.AlertDialog.choose_finish].
* *
* If you don't need to wait for a button to be clicked, you can use * If you don't need to wait for a button to be clicked, you can use
* [method@Gtk.AlertDialog.show]. * [method@Gtk.AlertDialog.show].
@@ -686,6 +687,10 @@ G_GNUC_END_IGNORE_DEPRECATIONS
* *
* This function shows the alert to the user. * This function shows the alert to the user.
* *
* The @callback will be called when the alert is dismissed.
* It should call [method@Gtk.AlertDialog.choose_finish]
* to obtain the result.
*
* It is ok to pass `NULL` for the callback if the alert * It is ok to pass `NULL` for the callback if the alert
* does not have more than one button. A simpler API for * does not have more than one button. A simpler API for
* this case is [method@Gtk.AlertDialog.show]. * this case is [method@Gtk.AlertDialog.show].
+7 -13
View File
@@ -76,19 +76,13 @@ G_DEFINE_TYPE (GtkApplicationImplQuartz, gtk_application_impl_quartz, GTK_TYPE_A
-(NSApplicationTerminateReply) applicationShouldTerminate:(NSApplication *)sender -(NSApplicationTerminateReply) applicationShouldTerminate:(NSApplication *)sender
{ {
const gchar *quit_action_name = "quit"; /* We have no way to give our message other than to pop up a dialog
GActionGroup *action_group = G_ACTION_GROUP (quartz->impl.application); * ourselves, which we should not do since the OS will already show
* one when we return NSTerminateNow.
if (quartz->quit_inhibit != 0) *
return NSTerminateCancel; * Just let the OS show the generic message...
*/
if (g_action_group_has_action (action_group, quit_action_name)) return quartz->quit_inhibit == 0 ? NSTerminateNow : NSTerminateCancel;
{
g_action_group_activate_action (action_group, quit_action_name, NULL);
return NSTerminateCancel;
}
return NSTerminateNow;
} }
-(void)application:(NSApplication *)theApplication openFiles:(NSArray *)filenames -(void)application:(NSApplication *)theApplication openFiles:(NSArray *)filenames
+1 -1
View File
@@ -84,7 +84,7 @@ gtk_builtin_icon_measure (GtkWidget *widget,
style = gtk_css_node_get_style (gtk_widget_get_css_node (widget)); style = gtk_css_node_get_style (gtk_widget_get_css_node (widget));
*minimum = *natural = gtk_css_number_value_get (style->icon->icon_size, 100); *minimum = *natural = _gtk_css_number_value_get (style->icon->icon_size, 100);
} }
static void static void
+7 -1
View File
@@ -36,7 +36,9 @@
* should be modal. * should be modal.
* *
* The dialog is shown with the [method@Gtk.ColorDialog.choose_rgba] * The dialog is shown with the [method@Gtk.ColorDialog.choose_rgba]
* function. * function. This API follows the GIO async pattern, and the
* result can be obtained by calling
* [method@Gtk.ColorDialog.choose_rgba_finish].
* *
* See [class@Gtk.ColorDialogButton] for a convenient control * See [class@Gtk.ColorDialogButton] for a convenient control
* that uses `GtkColorDialog` and presents the results. * that uses `GtkColorDialog` and presents the results.
@@ -434,6 +436,10 @@ G_GNUC_END_IGNORE_DEPRECATIONS
* This function initiates a color choice operation by * This function initiates a color choice operation by
* presenting a color chooser dialog to the user. * presenting a color chooser dialog to the user.
* *
* The @callback will be called when the dialog is dismissed.
* It should call [method@Gtk.ColorDialog.choose_rgba_finish]
* to obtain the result.
*
* Since: 4.10 * Since: 4.10
*/ */
void void
+1 -135
View File
@@ -32,9 +32,7 @@
#include <math.h> #include <math.h>
#include <string.h> #include <string.h>
#include "gtkcolorutilsprivate.h" #include "gtkcolorutils.h"
#include "gdkhslaprivate.h"
#include <math.h>
/* Converts from RGB to HSV */ /* Converts from RGB to HSV */
static void static void
@@ -228,135 +226,3 @@ gtk_rgb_to_hsv (float r, float g, float b,
if (v) if (v)
*v = b; *v = b;
} }
void
gtk_rgb_to_hwb (float red, float green, float blue,
float *hue, float *white, float *black)
{
GdkRGBA rgba = (GdkRGBA) { red, green, blue, 1 };
GdkHSLA hsla;
_gdk_hsla_init_from_rgba (&hsla, &rgba);
*hue = hsla.hue;
*white = MIN (MIN (red, green), blue);
*black = (1 - MAX (MAX (red, green), blue));
}
void
gtk_hwb_to_rgb (float hue, float white, float black,
float *red, float *green, float *blue)
{
GdkHSLA hsla;
GdkRGBA rgba;
if (white + black >= 1)
{
float gray = white / (white + black);
*red = gray;
*green = gray;
*blue = gray;
return;
}
hsla.hue = hue;
hsla.saturation = 1.0;
hsla.lightness = 0.5;
_gdk_rgba_init_from_hsla (&rgba, &hsla);
*red = rgba.red * (1 - white - black) + white;
*green = rgba.green * (1 - white - black) + white;
*blue = rgba.blue * (1 - white - black) + white;
}
#define DEG_TO_RAD(x) ((x) * G_PI / 180)
#define RAD_TO_DEG(x) ((x) * 180 / G_PI)
void
gtk_oklab_to_oklch (float L, float a, float b,
float *L2, float *C, float *H)
{
*L2 = L;
*C = sqrtf (a * a + b * b);
*H = atan2 (b, a);
}
void
gtk_oklch_to_oklab (float L, float C, float H,
float *L2, float *a, float *b)
{
*L2 = L;
if (H == 0)
{
*a = *b = 0;
}
else
{
*a = C * cosf (DEG_TO_RAD (H));
*b = C * sinf (DEG_TO_RAD (H));
}
}
static float
apply_gamma (float v)
{
if (v > 0.0031308)
return 1.055 * pow (v, 1/2.4) - 0.055;
else
return 12.92 * v;
}
static float
unapply_gamma (float v)
{
if (v >= 0.04045)
return pow (((v + 0.055)/(1 + 0.055)), 2.4);
else
return v / 12.92;
}
void
gtk_oklab_to_rgb (float L, float a, float b,
float *red, float *green, float *blue)
{
float l = L + 0.3963377774f * a + 0.2158037573f * b;
float m = L - 0.1055613458f * a - 0.0638541728f * b;
float s = L - 0.0894841775f * a - 1.2914855480f * b;
l = powf (l, 3);
m = powf (m, 3);
s = powf (s, 3);
float linear_red = +4.0767416621f * l - 3.3077115913f * m + 0.2309699292f * s;
float linear_green = -1.2684380046f * l + 2.6097574011f * m - 0.3413193965f * s;
float linear_blue = -0.0041960863f * l - 0.7034186147f * m + 1.7076147010f * s;
*red = apply_gamma (linear_red);
*green = apply_gamma (linear_green);
*blue = apply_gamma (linear_blue);
}
void
gtk_rgb_to_oklab (float red, float green, float blue,
float *L, float *a, float *b)
{
float linear_red = unapply_gamma (red);
float linear_green = unapply_gamma (green);
float linear_blue = unapply_gamma (blue);
float l = 0.4122214708f * linear_red + 0.5363325363f * linear_green + 0.0514459929f * linear_blue;
float m = 0.2119034982f * linear_red + 0.6806995451f * linear_green + 0.1073969566f * linear_blue;
float s = 0.0883024619f * linear_red + 0.2817188376f * linear_green + 0.6299787005f * linear_blue;
l = cbrtf (l);
m = cbrtf (m);
s = cbrtf (s);
*L = 0.2104542553f*l + 0.7936177850f*m - 0.0040720468f*s;
*a = 1.9779984951f*l - 2.4285922050f*m + 0.4505937099f*s;
*b = 0.0259040371f*l + 0.7827717662f*m - 0.8086757660f*s;
}
-40
View File
@@ -1,40 +0,0 @@
/* GTK - The GIMP Toolkit
* Copyright (C) 2024 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "gtkcolorutils.h"
G_BEGIN_DECLS
void gtk_rgb_to_hwb (float red, float green, float blue,
float *hue, float *white, float *black);
void gtk_hwb_to_rgb (float hue, float white, float black,
float *red, float *green, float *blue);
void gtk_oklab_to_oklch (float L, float a, float b,
float *L2, float *C, float *H);
void gtk_oklch_to_oklab (float L, float C, float H,
float *L2, float *a, float *b);
void gtk_oklab_to_rgb (float L, float a, float b,
float *red, float *green, float *blue);
void gtk_rgb_to_oklab (float red, float green, float blue,
float *L, float *a, float *b);
G_END_DECLS
+1 -3
View File
@@ -2188,8 +2188,7 @@ gtk_column_view_set_header_factory (GtkColumnView *self,
/** /**
* gtk_column_view_scroll_to: * gtk_column_view_scroll_to:
* @self: The columnview to scroll in * @self: The columnview to scroll in
* @pos: position of the item. Must be less than the number of * @pos: position of the item
* items in the view.
* @column: (nullable) (transfer none): The column to scroll to * @column: (nullable) (transfer none): The column to scroll to
* or %NULL to not scroll columns. * or %NULL to not scroll columns.
* @flags: actions to perform * @flags: actions to perform
@@ -2212,7 +2211,6 @@ gtk_column_view_scroll_to (GtkColumnView *self,
GtkScrollInfo *scroll) GtkScrollInfo *scroll)
{ {
g_return_if_fail (GTK_IS_COLUMN_VIEW (self)); g_return_if_fail (GTK_IS_COLUMN_VIEW (self));
g_return_if_fail (pos < gtk_list_base_get_n_items (GTK_LIST_BASE (self->listview)));
g_return_if_fail (column == NULL || GTK_IS_COLUMN_VIEW_COLUMN (column)); g_return_if_fail (column == NULL || GTK_IS_COLUMN_VIEW_COLUMN (column));
if (column) if (column)
{ {
+31 -97
View File
@@ -42,37 +42,9 @@
G_DEFINE_TYPE (GtkCssAnimatedStyle, gtk_css_animated_style, GTK_TYPE_CSS_STYLE) G_DEFINE_TYPE (GtkCssAnimatedStyle, gtk_css_animated_style, GTK_TYPE_CSS_STYLE)
static inline gboolean
property_has_color (guint id)
{
switch (id)
{
case GTK_CSS_PROPERTY_COLOR:
case GTK_CSS_PROPERTY_ICON_PALETTE:
case GTK_CSS_PROPERTY_TEXT_DECORATION_COLOR:
case GTK_CSS_PROPERTY_TEXT_SHADOW:
case GTK_CSS_PROPERTY_BOX_SHADOW:
case GTK_CSS_PROPERTY_BORDER_TOP_COLOR:
case GTK_CSS_PROPERTY_BORDER_RIGHT_COLOR:
case GTK_CSS_PROPERTY_BORDER_BOTTOM_COLOR:
case GTK_CSS_PROPERTY_BORDER_LEFT_COLOR:
case GTK_CSS_PROPERTY_OUTLINE_COLOR:
case GTK_CSS_PROPERTY_BACKGROUND_IMAGE:
case GTK_CSS_PROPERTY_ICON_SOURCE:
case GTK_CSS_PROPERTY_ICON_SHADOW:
case GTK_CSS_PROPERTY_CARET_COLOR:
case GTK_CSS_PROPERTY_SECONDARY_CARET_COLOR:
return TRUE;
default:
return FALSE;
}
}
#define DEFINE_VALUES(ENUM, TYPE, NAME) \ #define DEFINE_VALUES(ENUM, TYPE, NAME) \
static inline void \ static inline void \
gtk_css_ ## NAME ## _values_recompute (GtkCssAnimatedStyle *animated, \ gtk_css_ ## NAME ## _values_recompute (GtkCssAnimatedStyle *animated) \
GtkCssComputeContext *context, \
GtkCssAnimationChange change) \
{ \ { \
GtkCssStyle *style = (GtkCssStyle *)animated; \ GtkCssStyle *style = (GtkCssStyle *)animated; \
GtkCssValue **values = (GtkCssValue **)((guint8*)(animated->style->NAME) + sizeof (GtkCssValues)); \ GtkCssValue **values = (GtkCssValue **)((guint8*)(animated->style->NAME) + sizeof (GtkCssValues)); \
@@ -82,7 +54,6 @@ gtk_css_ ## NAME ## _values_recompute (GtkCssAnimatedStyle *animated, \
{ \ { \
guint id = NAME ## _props[i]; \ guint id = NAME ## _props[i]; \
GtkCssValue *original, *computed; \ GtkCssValue *original, *computed; \
gboolean needs_recompute = FALSE; \
\ \
if (values[i] == NULL) \ if (values[i] == NULL) \
continue; \ continue; \
@@ -91,27 +62,16 @@ gtk_css_ ## NAME ## _values_recompute (GtkCssAnimatedStyle *animated, \
if (original == NULL) \ if (original == NULL) \
continue; \ continue; \
\ \
if ((change & GTK_CSS_ANIMATION_CHANGE_VARIABLES) && \ computed = _gtk_css_value_compute (original, \
gtk_css_value_contains_variables (original)) \ id, \
needs_recompute = TRUE; \ animated->provider, \
\ style, \
if ((change & GTK_CSS_ANIMATION_CHANGE_COLOR) && \ animated->parent_style, \
property_has_color (id)) \ NULL); \
needs_recompute = TRUE; \
\
if (!needs_recompute) \
continue; \
\
computed = gtk_css_value_compute (original, \
id, \
context); \
if (computed == NULL) \ if (computed == NULL) \
continue; \ continue; \
\ \
gtk_css_animated_style_set_animated_value (animated, id, computed); \ gtk_css_animated_style_set_animated_value (animated, id, computed); \
\
if (id == GTK_CSS_PROPERTY_COLOR) \
change |= GTK_CSS_ANIMATION_CHANGE_COLOR; \
} \ } \
} }
@@ -645,20 +605,15 @@ gtk_css_animated_style_get_intrinsic_value (GtkCssAnimatedStyle *style,
return gtk_css_style_get_value (style->style, id); return gtk_css_style_get_value (style->style, id);
} }
gboolean void
gtk_css_animated_style_set_animated_custom_value (GtkCssAnimatedStyle *animated, gtk_css_animated_style_set_animated_custom_value (GtkCssAnimatedStyle *animated,
int id, int id,
GtkCssVariableValue *value) GtkCssVariableValue *value)
{ {
GtkCssStyle *style = (GtkCssStyle *)animated; GtkCssStyle *style = (GtkCssStyle *)animated;
GtkCssVariableValue *old_value;
gtk_internal_return_val_if_fail (GTK_IS_CSS_ANIMATED_STYLE (style), FALSE); gtk_internal_return_if_fail (GTK_IS_CSS_ANIMATED_STYLE (style));
gtk_internal_return_val_if_fail (value != NULL, FALSE); gtk_internal_return_if_fail (value != NULL);
old_value = gtk_css_style_get_custom_property (style, id);
if (gtk_css_variable_value_equal (old_value, value))
return FALSE;
if (style->variables == NULL) if (style->variables == NULL)
{ {
@@ -675,38 +630,17 @@ gtk_css_animated_style_set_animated_custom_value (GtkCssAnimatedStyle *animated,
gtk_css_variable_set_add (style->variables, id, value); gtk_css_variable_set_add (style->variables, id, value);
return TRUE; gtk_css_core_values_recompute (animated);
} gtk_css_background_values_recompute (animated);
gtk_css_border_values_recompute (animated);
void gtk_css_icon_values_recompute (animated);
gtk_css_animated_style_recompute (GtkCssAnimatedStyle *style, gtk_css_outline_values_recompute (animated);
GtkCssAnimationChange change) gtk_css_font_values_recompute (animated);
{ gtk_css_font_variant_values_recompute (animated);
GtkCssComputeContext context = { NULL, }; gtk_css_animation_values_recompute (animated);
GtkCssValue *shorthands[GTK_CSS_SHORTHAND_PROPERTY_N_PROPERTIES] = { NULL, }; gtk_css_transition_values_recompute (animated);
gtk_css_size_values_recompute (animated);
context.provider = style->provider; gtk_css_other_values_recompute (animated);
context.style = style->style;
context.parent_style = style->parent_style;
context.shorthands = shorthands;
gtk_css_core_values_recompute (style, &context, change);
gtk_css_background_values_recompute (style, &context, change);
gtk_css_border_values_recompute (style, &context, change);
gtk_css_icon_values_recompute (style, &context, change);
gtk_css_outline_values_recompute (style, &context, change);
gtk_css_font_values_recompute (style, &context, change);
gtk_css_font_variant_values_recompute (style, &context, change);
gtk_css_animation_values_recompute (style, &context, change);
gtk_css_transition_values_recompute (style, &context, change);
gtk_css_size_values_recompute (style, &context, change);
gtk_css_other_values_recompute (style, &context, change);
for (unsigned int i = 0; i < GTK_CSS_SHORTHAND_PROPERTY_N_PROPERTIES; i++)
{
if (shorthands[i])
gtk_css_value_unref (shorthands[i]);
}
} }
GtkCssVariableValue * GtkCssVariableValue *
@@ -855,8 +789,8 @@ gtk_css_animated_style_create_css_transitions (GPtrArray *animations,
if (_gtk_css_array_value_get_n_values (durations) == 1 && if (_gtk_css_array_value_get_n_values (durations) == 1 &&
_gtk_css_array_value_get_n_values (delays) == 1 && _gtk_css_array_value_get_n_values (delays) == 1 &&
gtk_css_number_value_get (_gtk_css_array_value_get_nth (durations, 0), 100) + _gtk_css_number_value_get (_gtk_css_array_value_get_nth (durations, 0), 100) +
gtk_css_number_value_get (_gtk_css_array_value_get_nth (delays, 0), 100) == 0) _gtk_css_number_value_get (_gtk_css_array_value_get_nth (delays, 0), 100) == 0)
return animations; return animations;
transition_infos_set (transitions, base_style->transition->transition_property); transition_infos_set (transitions, base_style->transition->transition_property);
@@ -871,8 +805,8 @@ gtk_css_animated_style_create_css_transitions (GPtrArray *animations,
if (!transitions[i].pending) if (!transitions[i].pending)
continue; continue;
duration = gtk_css_number_value_get (_gtk_css_array_value_get_nth (durations, transitions[i].index), 100); duration = _gtk_css_number_value_get (_gtk_css_array_value_get_nth (durations, transitions[i].index), 100);
delay = gtk_css_number_value_get (_gtk_css_array_value_get_nth (delays, transitions[i].index), 100); delay = _gtk_css_number_value_get (_gtk_css_array_value_get_nth (delays, transitions[i].index), 100);
if (duration + delay == 0.0) if (duration + delay == 0.0)
continue; continue;
@@ -881,7 +815,7 @@ gtk_css_animated_style_create_css_transitions (GPtrArray *animations,
start = gtk_css_animated_style_get_intrinsic_value ((GtkCssAnimatedStyle *)source, i); start = gtk_css_animated_style_get_intrinsic_value ((GtkCssAnimatedStyle *)source, i);
end = gtk_css_style_get_value (base_style, i); end = gtk_css_style_get_value (base_style, i);
if (gtk_css_value_equal (start, end)) if (_gtk_css_value_equal (start, end))
{ {
animation = gtk_css_animated_style_find_transition ((GtkCssAnimatedStyle *)source, i); animation = gtk_css_animated_style_find_transition ((GtkCssAnimatedStyle *)source, i);
if (animation) if (animation)
@@ -897,8 +831,8 @@ gtk_css_animated_style_create_css_transitions (GPtrArray *animations,
} }
} }
if (gtk_css_value_equal (gtk_css_style_get_value (source, i), if (_gtk_css_value_equal (gtk_css_style_get_value (source, i),
gtk_css_style_get_value (base_style, i))) gtk_css_style_get_value (base_style, i)))
continue; continue;
animation = _gtk_css_transition_new (i, animation = _gtk_css_transition_new (i,
@@ -1004,13 +938,13 @@ gtk_css_animated_style_create_css_animations (GPtrArray *animations,
animation = _gtk_css_animation_new (name, animation = _gtk_css_animation_new (name,
keyframes, keyframes,
timestamp, timestamp,
gtk_css_number_value_get (_gtk_css_array_value_get_nth (delays, i), 100) * G_USEC_PER_SEC, _gtk_css_number_value_get (_gtk_css_array_value_get_nth (delays, i), 100) * G_USEC_PER_SEC,
gtk_css_number_value_get (_gtk_css_array_value_get_nth (durations, i), 100) * G_USEC_PER_SEC, _gtk_css_number_value_get (_gtk_css_array_value_get_nth (durations, i), 100) * G_USEC_PER_SEC,
_gtk_css_array_value_get_nth (timing_functions, i), _gtk_css_array_value_get_nth (timing_functions, i),
_gtk_css_direction_value_get (_gtk_css_array_value_get_nth (directions, i)), _gtk_css_direction_value_get (_gtk_css_array_value_get_nth (directions, i)),
_gtk_css_play_state_value_get (_gtk_css_array_value_get_nth (play_states, i)), _gtk_css_play_state_value_get (_gtk_css_array_value_get_nth (play_states, i)),
_gtk_css_fill_mode_value_get (_gtk_css_array_value_get_nth (fill_modes, i)), _gtk_css_fill_mode_value_get (_gtk_css_array_value_get_nth (fill_modes, i)),
gtk_css_number_value_get (_gtk_css_array_value_get_nth (iteration_counts, i), 100)); _gtk_css_number_value_get (_gtk_css_array_value_get_nth (iteration_counts, i), 100));
} }
if (!animations) if (!animations)
+1 -9
View File
@@ -70,17 +70,9 @@ void gtk_css_animated_style_set_animated_value(GtkCssAnimated
GtkCssValue * gtk_css_animated_style_get_intrinsic_value (GtkCssAnimatedStyle *style, GtkCssValue * gtk_css_animated_style_get_intrinsic_value (GtkCssAnimatedStyle *style,
guint id); guint id);
gboolean gtk_css_animated_style_set_animated_custom_value (GtkCssAnimatedStyle *animated, void gtk_css_animated_style_set_animated_custom_value (GtkCssAnimatedStyle *animated,
int id, int id,
GtkCssVariableValue *value); GtkCssVariableValue *value);
typedef enum {
GTK_CSS_ANIMATION_CHANGE_VARIABLES = 1 << 0,
GTK_CSS_ANIMATION_CHANGE_COLOR = 1 << 1,
} GtkCssAnimationChange;
void gtk_css_animated_style_recompute (GtkCssAnimatedStyle *style,
GtkCssAnimationChange change);
GtkCssVariableValue * gtk_css_animated_style_get_intrinsic_custom_value (GtkCssAnimatedStyle *style, GtkCssVariableValue * gtk_css_animated_style_get_intrinsic_custom_value (GtkCssAnimatedStyle *style,
int id); int id);
+5 -13
View File
@@ -95,7 +95,6 @@ gtk_css_animation_apply_values (GtkStyleAnimation *style_animation,
GtkCssKeyframes *resolved_keyframes; GtkCssKeyframes *resolved_keyframes;
double progress; double progress;
guint i; guint i;
GtkCssAnimationChange change = 0;
if (!gtk_css_animation_is_executing (animation)) if (!gtk_css_animation_is_executing (animation))
return; return;
@@ -126,8 +125,7 @@ gtk_css_animation_apply_values (GtkStyleAnimation *style_animation,
if (!value) if (!value)
continue; continue;
if (gtk_css_animated_style_set_animated_custom_value (style, variable_id, value)) gtk_css_animated_style_set_animated_custom_value (style, variable_id, value);
change |= GTK_CSS_ANIMATION_CHANGE_VARIABLES;
gtk_css_variable_value_unref (value); gtk_css_variable_value_unref (value);
} }
@@ -136,7 +134,7 @@ gtk_css_animation_apply_values (GtkStyleAnimation *style_animation,
{ {
GtkCssValue *value; GtkCssValue *value;
guint property_id; guint property_id;
property_id = _gtk_css_keyframes_get_property_id (resolved_keyframes, i); property_id = _gtk_css_keyframes_get_property_id (resolved_keyframes, i);
value = _gtk_css_keyframes_get_value (resolved_keyframes, value = _gtk_css_keyframes_get_value (resolved_keyframes,
@@ -144,14 +142,8 @@ gtk_css_animation_apply_values (GtkStyleAnimation *style_animation,
progress, progress,
gtk_css_animated_style_get_intrinsic_value (style, property_id)); gtk_css_animated_style_get_intrinsic_value (style, property_id));
gtk_css_animated_style_set_animated_value (style, property_id, value); gtk_css_animated_style_set_animated_value (style, property_id, value);
if (property_id == GTK_CSS_PROPERTY_COLOR)
change |= GTK_CSS_ANIMATION_CHANGE_COLOR;
} }
if (change != 0)
gtk_css_animated_style_recompute (style, change);
_gtk_css_keyframes_unref (resolved_keyframes); _gtk_css_keyframes_unref (resolved_keyframes);
} }
@@ -179,7 +171,7 @@ gtk_css_animation_free (GtkStyleAnimation *animation)
g_free (self->name); g_free (self->name);
_gtk_css_keyframes_unref (self->keyframes); _gtk_css_keyframes_unref (self->keyframes);
gtk_css_value_unref (self->ease); _gtk_css_value_unref (self->ease);
g_free (self); g_free (self);
} }
@@ -219,7 +211,7 @@ _gtk_css_animation_new (const char *name,
animation->name = g_strdup (name); animation->name = g_strdup (name);
animation->keyframes = _gtk_css_keyframes_ref (keyframes); animation->keyframes = _gtk_css_keyframes_ref (keyframes);
animation->ease = gtk_css_value_ref (ease); animation->ease = _gtk_css_value_ref (ease);
animation->direction = direction; animation->direction = direction;
animation->play_state = play_state; animation->play_state = play_state;
animation->fill_mode = fill_mode; animation->fill_mode = fill_mode;
@@ -250,7 +242,7 @@ _gtk_css_animation_advance_with_play_state (GtkCssAnimation *source,
animation->name = g_strdup (source->name); animation->name = g_strdup (source->name);
animation->keyframes = _gtk_css_keyframes_ref (source->keyframes); animation->keyframes = _gtk_css_keyframes_ref (source->keyframes);
animation->ease = gtk_css_value_ref (source->ease); animation->ease = _gtk_css_value_ref (source->ease);
animation->direction = source->direction; animation->direction = source->direction;
animation->play_state = play_state; animation->play_state = play_state;
animation->fill_mode = source->fill_mode; animation->fill_mode = source->fill_mode;
+39 -37
View File
@@ -35,15 +35,18 @@ gtk_css_value_array_free (GtkCssValue *value)
guint i; guint i;
for (i = 0; i < value->n_values; i++) for (i = 0; i < value->n_values; i++)
gtk_css_value_unref (value->values[i]); _gtk_css_value_unref (value->values[i]);
g_free (value); g_free (value);
} }
static GtkCssValue * static GtkCssValue *
gtk_css_value_array_compute (GtkCssValue *value, gtk_css_value_array_compute (GtkCssValue *value,
guint property_id, guint property_id,
GtkCssComputeContext *context) GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssVariableSet *variables)
{ {
GtkCssValue *result; GtkCssValue *result;
GtkCssValue *i_value; GtkCssValue *i_value;
@@ -52,24 +55,24 @@ gtk_css_value_array_compute (GtkCssValue *value,
result = NULL; result = NULL;
for (i = 0; i < value->n_values; i++) for (i = 0; i < value->n_values; i++)
{ {
i_value = gtk_css_value_compute (value->values[i], property_id, context); i_value = _gtk_css_value_compute (value->values[i], property_id, provider, style, parent_style, variables);
if (result == NULL && if (result == NULL &&
i_value != value->values[i]) i_value != value->values[i])
{ {
result = _gtk_css_array_value_new_from_array (value->values, value->n_values); result = _gtk_css_array_value_new_from_array (value->values, value->n_values);
for (j = 0; j < i; j++) for (j = 0; j < i; j++)
gtk_css_value_ref (result->values[j]); _gtk_css_value_ref (result->values[j]);
} }
if (result != NULL) if (result != NULL)
result->values[i] = i_value; result->values[i] = i_value;
else else
gtk_css_value_unref (i_value); _gtk_css_value_unref (i_value);
} }
if (result == NULL) if (result == NULL)
return gtk_css_value_ref (value); return _gtk_css_value_ref (value);
return result; return result;
} }
@@ -85,8 +88,8 @@ gtk_css_value_array_equal (const GtkCssValue *value1,
for (i = 0; i < value1->n_values; i++) for (i = 0; i < value1->n_values; i++)
{ {
if (!gtk_css_value_equal (value1->values[i], if (!_gtk_css_value_equal (value1->values[i],
value2->values[i])) value2->values[i]))
return FALSE; return FALSE;
} }
@@ -125,14 +128,14 @@ gtk_css_value_array_transition_repeat (GtkCssValue *start,
for (i = 0; i < n; i++) for (i = 0; i < n; i++)
{ {
transitions[i] = gtk_css_value_transition (start->values[i % start->n_values], transitions[i] = _gtk_css_value_transition (start->values[i % start->n_values],
end->values[i % end->n_values], end->values[i % end->n_values],
property_id, property_id,
progress); progress);
if (transitions[i] == NULL) if (transitions[i] == NULL)
{ {
while (i--) while (i--)
gtk_css_value_unref (transitions[i]); _gtk_css_value_unref (transitions[i]);
return NULL; return NULL;
} }
} }
@@ -166,14 +169,14 @@ gtk_css_value_array_transition_extend (GtkCssValue *start,
for (i = 0; i < MIN (start->n_values, end->n_values); i++) for (i = 0; i < MIN (start->n_values, end->n_values); i++)
{ {
transitions[i] = gtk_css_value_transition (start->values[i], transitions[i] = _gtk_css_value_transition (start->values[i],
end->values[i], end->values[i],
property_id, property_id,
progress); progress);
if (transitions[i] == NULL) if (transitions[i] == NULL)
{ {
while (i--) while (i--)
gtk_css_value_unref (transitions[i]); _gtk_css_value_unref (transitions[i]);
return NULL; return NULL;
} }
} }
@@ -186,28 +189,28 @@ gtk_css_value_array_transition_extend (GtkCssValue *start,
for (; i < start->n_values; i++) for (; i < start->n_values; i++)
{ {
transitions[i] = gtk_css_value_transition (start->values[i], transitions[i] = _gtk_css_value_transition (start->values[i],
default_value, default_value,
property_id, property_id,
progress); progress);
if (transitions[i] == NULL) if (transitions[i] == NULL)
{ {
while (i--) while (i--)
gtk_css_value_unref (transitions[i]); _gtk_css_value_unref (transitions[i]);
return NULL; return NULL;
} }
} }
for (; i < end->n_values; i++) for (; i < end->n_values; i++)
{ {
transitions[i] = gtk_css_value_transition (default_value, transitions[i] = _gtk_css_value_transition (default_value,
end->values[i], end->values[i],
property_id, property_id,
progress); progress);
if (transitions[i] == NULL) if (transitions[i] == NULL)
{ {
while (i--) while (i--)
gtk_css_value_unref (transitions[i]); _gtk_css_value_unref (transitions[i]);
return NULL; return NULL;
} }
} }
@@ -325,17 +328,17 @@ gtk_css_value_array_get_dynamic_value (GtkCssValue *value,
{ {
result = _gtk_css_array_value_new_from_array (value->values, value->n_values); result = _gtk_css_array_value_new_from_array (value->values, value->n_values);
for (j = 0; j < i; j++) for (j = 0; j < i; j++)
gtk_css_value_ref (result->values[j]); _gtk_css_value_ref (result->values[j]);
} }
if (result != NULL) if (result != NULL)
result->values[i] = i_value; result->values[i] = i_value;
else else
gtk_css_value_unref (i_value); _gtk_css_value_unref (i_value);
} }
if (result == NULL) if (result == NULL)
return gtk_css_value_ref (value); return _gtk_css_value_ref (value);
return result; return result;
} }
@@ -356,7 +359,7 @@ gtk_css_value_array_print (const GtkCssValue *value,
{ {
if (i > 0) if (i > 0)
g_string_append (string, ", "); g_string_append (string, ", ");
gtk_css_value_print (value->values[i], string); _gtk_css_value_print (value->values[i], string);
} }
} }
@@ -392,12 +395,11 @@ _gtk_css_array_value_new_from_array (GtkCssValue **values,
if (n_values == 1) if (n_values == 1)
return values[0]; return values[0];
result = gtk_css_value_alloc (&GTK_CSS_VALUE_ARRAY, sizeof (GtkCssValue) + sizeof (GtkCssValue *) * (n_values - 1)); result = _gtk_css_value_alloc (&GTK_CSS_VALUE_ARRAY, sizeof (GtkCssValue) + sizeof (GtkCssValue *) * (n_values - 1));
result->n_values = n_values; result->n_values = n_values;
memcpy (&result->values[0], values, sizeof (GtkCssValue *) * n_values); memcpy (&result->values[0], values, sizeof (GtkCssValue *) * n_values);
result->is_computed = TRUE; result->is_computed = TRUE;
result->contains_variables = FALSE;
for (i = 0; i < n_values; i ++) for (i = 0; i < n_values; i ++)
{ {
if (!gtk_css_value_is_computed (values[i])) if (!gtk_css_value_is_computed (values[i]))
@@ -428,7 +430,7 @@ _gtk_css_array_value_parse (GtkCssParser *parser,
if (value == NULL) if (value == NULL)
{ {
for (i = 0; i < n_values; i ++) for (i = 0; i < n_values; i ++)
gtk_css_value_unref (values[i]); _gtk_css_value_unref (values[i]);
return NULL; return NULL;
} }
+38 -35
View File
@@ -33,39 +33,42 @@ static void
gtk_css_value_bg_size_free (GtkCssValue *value) gtk_css_value_bg_size_free (GtkCssValue *value)
{ {
if (value->x) if (value->x)
gtk_css_value_unref (value->x); _gtk_css_value_unref (value->x);
if (value->y) if (value->y)
gtk_css_value_unref (value->y); _gtk_css_value_unref (value->y);
g_free (value); g_free (value);
} }
static GtkCssValue * static GtkCssValue *
gtk_css_value_bg_size_compute (GtkCssValue *value, gtk_css_value_bg_size_compute (GtkCssValue *value,
guint property_id, guint property_id,
GtkCssComputeContext *context) GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssVariableSet *variables)
{ {
GtkCssValue *x, *y; GtkCssValue *x, *y;
if (value->x == NULL && value->y == NULL) if (value->x == NULL && value->y == NULL)
return gtk_css_value_ref (value); return _gtk_css_value_ref (value);
x = y = NULL; x = y = NULL;
if (value->x) if (value->x)
x = gtk_css_value_compute (value->x, property_id, context); x = _gtk_css_value_compute (value->x, property_id, provider, style, parent_style, variables);
if (value->y) if (value->y)
y = gtk_css_value_compute (value->y, property_id, context); y = _gtk_css_value_compute (value->y, property_id, provider, style, parent_style, variables);
if (x == value->x && y == value->y) if (x == value->x && y == value->y)
{ {
if (x) if (x)
gtk_css_value_unref (x); _gtk_css_value_unref (x);
if (y) if (y)
gtk_css_value_unref (y); _gtk_css_value_unref (y);
return gtk_css_value_ref (value); return _gtk_css_value_ref (value);
} }
return _gtk_css_bg_size_value_new (value->x ? x : NULL, return _gtk_css_bg_size_value_new (value->x ? x : NULL,
@@ -80,10 +83,10 @@ gtk_css_value_bg_size_equal (const GtkCssValue *value1,
value1->contain == value2->contain && value1->contain == value2->contain &&
(value1->x == value2->x || (value1->x == value2->x ||
(value1->x != NULL && value2->x != NULL && (value1->x != NULL && value2->x != NULL &&
gtk_css_value_equal (value1->x, value2->x))) && _gtk_css_value_equal (value1->x, value2->x))) &&
(value1->y == value2->y || (value1->y == value2->y ||
(value1->y != NULL && value2->y != NULL && (value1->y != NULL && value2->y != NULL &&
gtk_css_value_equal (value1->y, value2->y))); _gtk_css_value_equal (value1->y, value2->y)));
} }
static GtkCssValue * static GtkCssValue *
@@ -95,9 +98,9 @@ gtk_css_value_bg_size_transition (GtkCssValue *start,
GtkCssValue *x, *y; GtkCssValue *x, *y;
if (start->cover) if (start->cover)
return end->cover ? gtk_css_value_ref (end) : NULL; return end->cover ? _gtk_css_value_ref (end) : NULL;
if (start->contain) if (start->contain)
return end->contain ? gtk_css_value_ref (end) : NULL; return end->contain ? _gtk_css_value_ref (end) : NULL;
if ((start->x != NULL) ^ (end->x != NULL) || if ((start->x != NULL) ^ (end->x != NULL) ||
(start->y != NULL) ^ (end->y != NULL)) (start->y != NULL) ^ (end->y != NULL))
@@ -105,7 +108,7 @@ gtk_css_value_bg_size_transition (GtkCssValue *start,
if (start->x) if (start->x)
{ {
x = gtk_css_value_transition (start->x, end->x, property_id, progress); x = _gtk_css_value_transition (start->x, end->x, property_id, progress);
if (x == NULL) if (x == NULL)
return NULL; return NULL;
} }
@@ -114,10 +117,10 @@ gtk_css_value_bg_size_transition (GtkCssValue *start,
if (start->y) if (start->y)
{ {
y = gtk_css_value_transition (start->y, end->y, property_id, progress); y = _gtk_css_value_transition (start->y, end->y, property_id, progress);
if (y == NULL) if (y == NULL)
{ {
gtk_css_value_unref (x); _gtk_css_value_unref (x);
return NULL; return NULL;
} }
} }
@@ -140,12 +143,12 @@ gtk_css_value_bg_size_print (const GtkCssValue *value,
if (value->x == NULL) if (value->x == NULL)
g_string_append (string, "auto"); g_string_append (string, "auto");
else else
gtk_css_value_print (value->x, string); _gtk_css_value_print (value->x, string);
if (value->y) if (value->y)
{ {
g_string_append_c (string, ' '); g_string_append_c (string, ' ');
gtk_css_value_print (value->y, string); _gtk_css_value_print (value->y, string);
} }
} }
} }
@@ -172,9 +175,9 @@ _gtk_css_bg_size_value_new (GtkCssValue *x,
GtkCssValue *result; GtkCssValue *result;
if (x == NULL && y == NULL) if (x == NULL && y == NULL)
return gtk_css_value_ref (&auto_singleton); return _gtk_css_value_ref (&auto_singleton);
result = gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_BG_SIZE); result = _gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_BG_SIZE);
result->x = x; result->x = x;
result->y = y; result->y = y;
result->is_computed = (!x || gtk_css_value_is_computed (x)) && result->is_computed = (!x || gtk_css_value_is_computed (x)) &&
@@ -189,18 +192,18 @@ _gtk_css_bg_size_value_parse (GtkCssParser *parser)
GtkCssValue *x, *y; GtkCssValue *x, *y;
if (gtk_css_parser_try_ident (parser, "cover")) if (gtk_css_parser_try_ident (parser, "cover"))
return gtk_css_value_ref (&cover_singleton); return _gtk_css_value_ref (&cover_singleton);
else if (gtk_css_parser_try_ident (parser, "contain")) else if (gtk_css_parser_try_ident (parser, "contain"))
return gtk_css_value_ref (&contain_singleton); return _gtk_css_value_ref (&contain_singleton);
if (gtk_css_parser_try_ident (parser, "auto")) if (gtk_css_parser_try_ident (parser, "auto"))
x = NULL; x = NULL;
else else
{ {
x = gtk_css_number_value_parse (parser, x = _gtk_css_number_value_parse (parser,
GTK_CSS_POSITIVE_ONLY GTK_CSS_POSITIVE_ONLY
| GTK_CSS_PARSE_PERCENT | GTK_CSS_PARSE_PERCENT
| GTK_CSS_PARSE_LENGTH); | GTK_CSS_PARSE_LENGTH);
if (x == NULL) if (x == NULL)
return NULL; return NULL;
} }
@@ -211,13 +214,13 @@ _gtk_css_bg_size_value_parse (GtkCssParser *parser)
y = NULL; y = NULL;
else else
{ {
y = gtk_css_number_value_parse (parser, y = _gtk_css_number_value_parse (parser,
GTK_CSS_POSITIVE_ONLY GTK_CSS_POSITIVE_ONLY
| GTK_CSS_PARSE_PERCENT | GTK_CSS_PARSE_PERCENT
| GTK_CSS_PARSE_LENGTH); | GTK_CSS_PARSE_LENGTH);
if (y == NULL) if (y == NULL)
{ {
gtk_css_value_unref (x); _gtk_css_value_unref (x);
return NULL; return NULL;
} }
} }
@@ -280,8 +283,8 @@ _gtk_css_bg_size_value_compute_size (const GtkCssValue *value,
double x, y; double x, y;
/* note: 0 does the right thing later for 'auto' */ /* note: 0 does the right thing later for 'auto' */
x = value->x ? gtk_css_number_value_get (value->x, area_width) : 0; x = value->x ? _gtk_css_number_value_get (value->x, area_width) : 0;
y = value->y ? gtk_css_number_value_get (value->y, area_height) : 0; y = value->y ? _gtk_css_number_value_get (value->y, area_height) : 0;
if ((x <= 0 && value->x) || if ((x <= 0 && value->x) ||
(y <= 0 && value->y)) (y <= 0 && value->y))
+20 -17
View File
@@ -35,16 +35,19 @@ gtk_css_value_border_free (GtkCssValue *value)
for (i = 0; i < 4; i++) for (i = 0; i < 4; i++)
{ {
if (value->values[i]) if (value->values[i])
gtk_css_value_unref (value->values[i]); _gtk_css_value_unref (value->values[i]);
} }
g_free (value); g_free (value);
} }
static GtkCssValue * static GtkCssValue *
gtk_css_value_border_compute (GtkCssValue *value, gtk_css_value_border_compute (GtkCssValue *value,
guint property_id, guint property_id,
GtkCssComputeContext *context) GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssVariableSet *variables)
{ {
GtkCssValue *values[4]; GtkCssValue *values[4];
GtkCssValue *computed; GtkCssValue *computed;
@@ -55,7 +58,7 @@ gtk_css_value_border_compute (GtkCssValue *value,
{ {
if (value->values[i]) if (value->values[i])
{ {
values[i] = gtk_css_value_compute (value->values[i], property_id, context); values[i] = _gtk_css_value_compute (value->values[i], property_id, provider, style, parent_style, variables);
changed |= (values[i] != value->values[i]); changed |= (values[i] != value->values[i]);
} }
else else
@@ -69,9 +72,9 @@ gtk_css_value_border_compute (GtkCssValue *value,
for (i = 0; i < 4; i++) for (i = 0; i < 4; i++)
{ {
if (values[i] != NULL) if (values[i] != NULL)
gtk_css_value_unref (values[i]); _gtk_css_value_unref (values[i]);
} }
return gtk_css_value_ref (value); return _gtk_css_value_ref (value);
} }
computed = _gtk_css_border_value_new (values[0], values[1], values[2], values[3]); computed = _gtk_css_border_value_new (values[0], values[1], values[2], values[3]);
@@ -91,7 +94,7 @@ gtk_css_value_border_equal (const GtkCssValue *value1,
for (i = 0; i < 4; i++) for (i = 0; i < 4; i++)
{ {
if (!gtk_css_value_equal0 (value1->values[i], value2->values[i])) if (!_gtk_css_value_equal0 (value1->values[i], value2->values[i]))
return FALSE; return FALSE;
} }
@@ -113,11 +116,11 @@ gtk_css_value_border_print (const GtkCssValue *value,
{ {
guint i, n; guint i, n;
if (!gtk_css_value_equal0 (value->values[GTK_CSS_RIGHT], value->values[GTK_CSS_LEFT])) if (!_gtk_css_value_equal0 (value->values[GTK_CSS_RIGHT], value->values[GTK_CSS_LEFT]))
n = 4; n = 4;
else if (!gtk_css_value_equal0 (value->values[GTK_CSS_TOP], value->values[GTK_CSS_BOTTOM])) else if (!_gtk_css_value_equal0 (value->values[GTK_CSS_TOP], value->values[GTK_CSS_BOTTOM]))
n = 3; n = 3;
else if (!gtk_css_value_equal0 (value->values[GTK_CSS_TOP], value->values[GTK_CSS_RIGHT])) else if (!_gtk_css_value_equal0 (value->values[GTK_CSS_TOP], value->values[GTK_CSS_RIGHT]))
n = 2; n = 2;
else else
n = 1; n = 1;
@@ -130,7 +133,7 @@ gtk_css_value_border_print (const GtkCssValue *value,
if (value->values[i] == NULL) if (value->values[i] == NULL)
g_string_append (string, "auto"); g_string_append (string, "auto");
else else
gtk_css_value_print (value->values[i], string); _gtk_css_value_print (value->values[i], string);
} }
if (value->fill) if (value->fill)
@@ -156,7 +159,7 @@ _gtk_css_border_value_new (GtkCssValue *top,
{ {
GtkCssValue *result; GtkCssValue *result;
result = gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_BORDER); result = _gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_BORDER);
result->values[GTK_CSS_TOP] = top; result->values[GTK_CSS_TOP] = top;
result->values[GTK_CSS_RIGHT] = right; result->values[GTK_CSS_RIGHT] = right;
result->values[GTK_CSS_BOTTOM] = bottom; result->values[GTK_CSS_BOTTOM] = bottom;
@@ -191,10 +194,10 @@ _gtk_css_border_value_parse (GtkCssParser *parser,
if (!gtk_css_number_value_can_parse (parser)) if (!gtk_css_number_value_can_parse (parser))
break; break;
result->values[i] = gtk_css_number_value_parse (parser, flags); result->values[i] = _gtk_css_number_value_parse (parser, flags);
if (result->values[i] == NULL) if (result->values[i] == NULL)
{ {
gtk_css_value_unref (result); _gtk_css_value_unref (result);
return NULL; return NULL;
} }
} }
@@ -202,7 +205,7 @@ _gtk_css_border_value_parse (GtkCssParser *parser,
if (i == 0) if (i == 0)
{ {
gtk_css_parser_error_syntax (parser, "Expected a number"); gtk_css_parser_error_syntax (parser, "Expected a number");
gtk_css_value_unref (result); _gtk_css_value_unref (result);
return NULL; return NULL;
} }
@@ -212,7 +215,7 @@ _gtk_css_border_value_parse (GtkCssParser *parser,
for (; i < 4; i++) for (; i < 4; i++)
{ {
if (result->values[(i - 1) >> 1]) if (result->values[(i - 1) >> 1])
result->values[i] = gtk_css_value_ref (result->values[(i - 1) >> 1]); result->values[i] = _gtk_css_value_ref (result->values[(i - 1) >> 1]);
} }
result->is_computed = TRUE; result->is_computed = TRUE;
+14 -14
View File
@@ -84,17 +84,17 @@ gtk_css_boxes_rect_grow (GskRoundedRect *dest,
if (gtk_css_dimension_value_is_zero (right)) if (gtk_css_dimension_value_is_zero (right))
dest->bounds.size.width = src->bounds.size.width; dest->bounds.size.width = src->bounds.size.width;
else else
dest->bounds.size.width = src->bounds.size.width + gtk_css_number_value_get (right, 100); dest->bounds.size.width = src->bounds.size.width + _gtk_css_number_value_get (right, 100);
} }
else else
{ {
const double left_value = gtk_css_number_value_get (left, 100); const double left_value = _gtk_css_number_value_get (left, 100);
dest->bounds.origin.x = src->bounds.origin.x - left_value; dest->bounds.origin.x = src->bounds.origin.x - left_value;
if (gtk_css_dimension_value_is_zero (right)) if (gtk_css_dimension_value_is_zero (right))
dest->bounds.size.width = src->bounds.size.width + left_value; dest->bounds.size.width = src->bounds.size.width + left_value;
else else
dest->bounds.size.width = src->bounds.size.width + left_value + gtk_css_number_value_get (right, 100); dest->bounds.size.width = src->bounds.size.width + left_value + _gtk_css_number_value_get (right, 100);
} }
@@ -105,17 +105,17 @@ gtk_css_boxes_rect_grow (GskRoundedRect *dest,
if (gtk_css_dimension_value_is_zero (bottom)) if (gtk_css_dimension_value_is_zero (bottom))
dest->bounds.size.height = src->bounds.size.height; dest->bounds.size.height = src->bounds.size.height;
else else
dest->bounds.size.height = src->bounds.size.height + gtk_css_number_value_get (bottom, 100); dest->bounds.size.height = src->bounds.size.height + _gtk_css_number_value_get (bottom, 100);
} }
else else
{ {
const double top_value = gtk_css_number_value_get (top, 100); const double top_value = _gtk_css_number_value_get (top, 100);
dest->bounds.origin.y = src->bounds.origin.y - top_value; dest->bounds.origin.y = src->bounds.origin.y - top_value;
if (gtk_css_dimension_value_is_zero (bottom)) if (gtk_css_dimension_value_is_zero (bottom))
dest->bounds.size.height = src->bounds.size.height + top_value; dest->bounds.size.height = src->bounds.size.height + top_value;
else else
dest->bounds.size.height = src->bounds.size.height + top_value + gtk_css_number_value_get (bottom, 100); dest->bounds.size.height = src->bounds.size.height + top_value + _gtk_css_number_value_get (bottom, 100);
} }
} }
@@ -127,10 +127,10 @@ gtk_css_boxes_rect_shrink (GskRoundedRect *dest,
GtkCssValue *bottom_value, GtkCssValue *bottom_value,
GtkCssValue *left_value) GtkCssValue *left_value)
{ {
double top = gtk_css_number_value_get (top_value, 100); double top = _gtk_css_number_value_get (top_value, 100);
double right = gtk_css_number_value_get (right_value, 100); double right = _gtk_css_number_value_get (right_value, 100);
double bottom = gtk_css_number_value_get (bottom_value, 100); double bottom = _gtk_css_number_value_get (bottom_value, 100);
double left = gtk_css_number_value_get (left_value, 100); double left = _gtk_css_number_value_get (left_value, 100);
/* FIXME: Do we need underflow checks here? */ /* FIXME: Do we need underflow checks here? */
dest->bounds.origin.x = src->bounds.origin.x + left; dest->bounds.origin.x = src->bounds.origin.x + left;
@@ -255,8 +255,8 @@ gtk_css_boxes_compute_outline_rect (GtkCssBoxes *boxes)
dest = &boxes->box[GTK_CSS_AREA_OUTLINE_BOX].bounds; dest = &boxes->box[GTK_CSS_AREA_OUTLINE_BOX].bounds;
src = &boxes->box[GTK_CSS_AREA_BORDER_BOX].bounds; src = &boxes->box[GTK_CSS_AREA_BORDER_BOX].bounds;
d = gtk_css_number_value_get (boxes->style->outline->outline_offset, 100) + d = _gtk_css_number_value_get (boxes->style->outline->outline_offset, 100) +
gtk_css_number_value_get (boxes->style->outline->outline_width, 100); _gtk_css_number_value_get (boxes->style->outline->outline_width, 100);
dest->origin.x = src->origin.x - d; dest->origin.x = src->origin.x - d;
dest->origin.y = src->origin.y - d; dest->origin.y = src->origin.y - d;
@@ -483,8 +483,8 @@ gtk_css_boxes_compute_outline_box (GtkCssBoxes *boxes)
src = &boxes->box[GTK_CSS_AREA_BORDER_BOX]; src = &boxes->box[GTK_CSS_AREA_BORDER_BOX];
dest = &boxes->box[GTK_CSS_AREA_OUTLINE_BOX]; dest = &boxes->box[GTK_CSS_AREA_OUTLINE_BOX];
d = gtk_css_number_value_get (boxes->style->outline->outline_offset, 100) + d = _gtk_css_number_value_get (boxes->style->outline->outline_offset, 100) +
gtk_css_number_value_get (boxes->style->outline->outline_width, 100); _gtk_css_number_value_get (boxes->style->outline->outline_width, 100);
/* Grow border rect into outline rect */ /* Grow border rect into outline rect */
dest->bounds.origin.x = src->bounds.origin.x - d; dest->bounds.origin.x = src->bounds.origin.x - d;
+13 -317
View File
@@ -60,7 +60,7 @@ gtk_css_calc_value_parse_value (GtkCssParser *parser,
return result; return result;
} }
return gtk_css_number_value_parse (parser, flags); return _gtk_css_number_value_parse (parser, flags);
} }
static gboolean static gboolean
@@ -96,11 +96,11 @@ gtk_css_calc_value_parse_product (GtkCssParser *parser,
if (value == NULL) if (value == NULL)
goto fail; goto fail;
if (is_number (value)) if (is_number (value))
temp = gtk_css_number_value_multiply (result, gtk_css_number_value_get (value, 100)); temp = gtk_css_number_value_multiply (result, _gtk_css_number_value_get (value, 100));
else else
temp = gtk_css_number_value_multiply (value, gtk_css_number_value_get (result, 100)); temp = gtk_css_number_value_multiply (value, _gtk_css_number_value_get (result, 100));
gtk_css_value_unref (value); _gtk_css_value_unref (value);
gtk_css_value_unref (result); _gtk_css_value_unref (result);
result = temp; result = temp;
} }
else if (gtk_css_parser_try_delim (parser, '/')) else if (gtk_css_parser_try_delim (parser, '/'))
@@ -108,9 +108,9 @@ gtk_css_calc_value_parse_product (GtkCssParser *parser,
value = gtk_css_calc_value_parse_product (parser, GTK_CSS_PARSE_NUMBER); value = gtk_css_calc_value_parse_product (parser, GTK_CSS_PARSE_NUMBER);
if (value == NULL) if (value == NULL)
goto fail; goto fail;
temp = gtk_css_number_value_multiply (result, 1.0 / gtk_css_number_value_get (value, 100)); temp = gtk_css_number_value_multiply (result, 1.0 / _gtk_css_number_value_get (value, 100));
gtk_css_value_unref (value); _gtk_css_value_unref (value);
gtk_css_value_unref (result); _gtk_css_value_unref (result);
result = temp; result = temp;
} }
else else
@@ -132,7 +132,7 @@ gtk_css_calc_value_parse_product (GtkCssParser *parser,
return result; return result;
fail: fail:
gtk_css_value_unref (result); _gtk_css_value_unref (result);
return NULL; return NULL;
} }
@@ -162,7 +162,7 @@ gtk_css_calc_value_parse_sum (GtkCssParser *parser,
if (temp == NULL) if (temp == NULL)
goto fail; goto fail;
next = gtk_css_number_value_multiply (temp, -1); next = gtk_css_number_value_multiply (temp, -1);
gtk_css_value_unref (temp); _gtk_css_value_unref (temp);
} }
else else
{ {
@@ -178,15 +178,15 @@ gtk_css_calc_value_parse_sum (GtkCssParser *parser,
} }
temp = gtk_css_number_value_add (result, next); temp = gtk_css_number_value_add (result, next);
gtk_css_value_unref (result); _gtk_css_value_unref (result);
gtk_css_value_unref (next); _gtk_css_value_unref (next);
result = temp; result = temp;
} }
return result; return result;
fail: fail:
gtk_css_value_unref (result); _gtk_css_value_unref (result);
return NULL; return NULL;
} }
@@ -232,307 +232,3 @@ gtk_css_calc_value_parse (GtkCssParser *parser,
return data.value; return data.value;
} }
typedef struct
{
GtkCssNumberParseFlags flags;
GPtrArray *values;
} ParseArgnData;
static guint
gtk_css_argn_value_parse_arg (GtkCssParser *parser,
guint arg,
gpointer data_)
{
ParseArgnData *data = data_;
GtkCssValue *value;
value = gtk_css_calc_value_parse_sum (parser, data->flags);
if (value == NULL)
return 0;
g_ptr_array_add (data->values, value);
return 1;
}
typedef struct
{
GtkCssNumberParseFlags flags;
GtkCssValue *values[3];
} ParseClampData;
static guint
gtk_css_clamp_value_parse_arg (GtkCssParser *parser,
guint arg,
gpointer data_)
{
ParseClampData *data = data_;
if ((arg == 0 || arg == 2))
{
if (gtk_css_parser_try_ident (parser, "none"))
{
data->values[arg] = NULL;
return 1;
}
}
data->values[arg] = gtk_css_calc_value_parse_sum (parser, data->flags);
if (data->values[arg] == NULL)
return 0;
return 1;
}
GtkCssValue *
gtk_css_clamp_value_parse (GtkCssParser *parser,
GtkCssNumberParseFlags flags,
guint type)
{
ParseClampData data;
GtkCssValue *result = NULL;
if (!gtk_css_parser_has_function (parser, "clamp"))
{
gtk_css_parser_error_syntax (parser, "Expected 'clamp('");
return NULL;
}
/* This can only be handled at compute time, we allow '-' after all */
data.flags = flags & ~GTK_CSS_POSITIVE_ONLY;
data.values[0] = NULL;
data.values[1] = NULL;
data.values[2] = NULL;
if (gtk_css_parser_consume_function (parser, 3, 3, gtk_css_clamp_value_parse_arg, &data))
{
GtkCssDimension dim = gtk_css_number_value_get_dimension (data.values[1]);
if ((data.values[0] && gtk_css_number_value_get_dimension (data.values[0]) != dim) ||
(data.values[2] && gtk_css_number_value_get_dimension (data.values[2]) != dim))
gtk_css_parser_error_syntax (parser, "Inconsistent types in 'clamp('");
else
result = gtk_css_math_value_new (type, 0, data.values, 3);
}
if (result == NULL)
{
g_clear_pointer (&data.values[0], gtk_css_value_unref);
g_clear_pointer (&data.values[1], gtk_css_value_unref);
g_clear_pointer (&data.values[2], gtk_css_value_unref);
}
return result;
}
typedef struct {
GtkCssNumberParseFlags flags;
guint mode;
gboolean has_mode;
GtkCssValue *values[2];
} ParseRoundData;
static guint
gtk_css_round_value_parse_arg (GtkCssParser *parser,
guint arg,
gpointer data_)
{
ParseRoundData *data = data_;
if (arg == 0)
{
const char *modes[] = { "nearest", "up", "down", "to-zero" };
for (guint i = 0; i < G_N_ELEMENTS (modes); i++)
{
if (gtk_css_parser_try_ident (parser, modes[i]))
{
data->mode = i;
data->has_mode = TRUE;
return 1;
}
}
data->values[0] = gtk_css_calc_value_parse_sum (parser, data->flags);
if (data->values[0] == NULL)
return 0;
}
else if (arg == 1)
{
GtkCssValue *value = gtk_css_calc_value_parse_sum (parser, data->flags);
if (value == NULL)
return 0;
if (data->has_mode)
data->values[0] = value;
else
data->values[1] = value;
}
else
{
if (!data->has_mode)
{
gtk_css_parser_error_syntax (parser, "Too many argument for 'round'");
return 0;
}
data->values[1] = gtk_css_calc_value_parse_sum (parser, data->flags);
if (data->values[1] == NULL)
return 0;
}
return 1;
}
GtkCssValue *
gtk_css_round_value_parse (GtkCssParser *parser,
GtkCssNumberParseFlags flags,
guint type)
{
ParseRoundData data;
GtkCssValue *result = NULL;
if (!gtk_css_parser_has_function (parser, "round"))
{
gtk_css_parser_error_syntax (parser, "Expected 'round('");
return NULL;
}
data.flags = flags & ~GTK_CSS_POSITIVE_ONLY;
data.mode = ROUND_NEAREST;
data.has_mode = FALSE;
data.values[0] = NULL;
data.values[1] = NULL;
if (gtk_css_parser_consume_function (parser, 1, 3, gtk_css_round_value_parse_arg, &data) &&
data.values[0] != NULL)
{
if (data.values[1] != NULL &&
gtk_css_number_value_get_dimension (data.values[0]) !=
gtk_css_number_value_get_dimension (data.values[1]))
gtk_css_parser_error_syntax (parser, "Inconsistent types in 'round('");
else if (data.values[1] == NULL &&
gtk_css_number_value_get_dimension (data.values[0]) != GTK_CSS_DIMENSION_NUMBER)
gtk_css_parser_error_syntax (parser, "Can't omit second argument to 'round(' here");
else
result = gtk_css_math_value_new (type, data.mode, data.values, data.values[1] != NULL ? 2 : 1);
}
if (result == NULL)
{
g_clear_pointer (&data.values[0], gtk_css_value_unref);
g_clear_pointer (&data.values[1], gtk_css_value_unref);
}
return result;
}
typedef struct {
GtkCssNumberParseFlags flags;
GtkCssValue *values[2];
} ParseArg2Data;
static guint
gtk_css_arg2_value_parse_arg (GtkCssParser *parser,
guint arg,
gpointer data_)
{
ParseArg2Data *data = data_;
data->values[arg] = gtk_css_calc_value_parse_sum (parser, data->flags);
if (data->values[arg] == NULL)
return 0;
return 1;
}
GtkCssValue *
gtk_css_arg2_value_parse (GtkCssParser *parser,
GtkCssNumberParseFlags flags,
guint min_args,
guint max_args,
const char *function,
guint type)
{
ParseArg2Data data;
GtkCssValue *result = NULL;
g_assert (1 <= min_args && min_args <= max_args && max_args <= 2);
if (!gtk_css_parser_has_function (parser, function))
{
gtk_css_parser_error_syntax (parser, "Expected '%s('", function);
return NULL;
}
data.flags = flags & ~GTK_CSS_POSITIVE_ONLY;
data.values[0] = NULL;
data.values[1] = NULL;
if (gtk_css_parser_consume_function (parser, min_args, max_args, gtk_css_arg2_value_parse_arg, &data))
{
if (data.values[1] != NULL &&
gtk_css_number_value_get_dimension (data.values[0]) !=
gtk_css_number_value_get_dimension (data.values[1]))
gtk_css_parser_error_syntax (parser, "Inconsistent types in '%s('", function);
else
result = gtk_css_math_value_new (type, 0, data.values, data.values[1] != NULL ? 2 : 1);
}
if (result == NULL)
{
g_clear_pointer (&data.values[0], gtk_css_value_unref);
g_clear_pointer (&data.values[1], gtk_css_value_unref);
}
return result;
}
GtkCssValue *
gtk_css_argn_value_parse (GtkCssParser *parser,
GtkCssNumberParseFlags flags,
const char *function,
guint type)
{
ParseArgnData data;
GtkCssValue *result = NULL;
if (!gtk_css_parser_has_function (parser, function))
{
gtk_css_parser_error_syntax (parser, "Expected '%s('", function);
return NULL;
}
/* This can only be handled at compute time, we allow '-' after all */
data.flags = flags & ~GTK_CSS_POSITIVE_ONLY;
data.values = g_ptr_array_new ();
if (gtk_css_parser_consume_function (parser, 1, G_MAXUINT, gtk_css_argn_value_parse_arg, &data))
{
GtkCssValue *val = (GtkCssValue *) g_ptr_array_index (data.values, 0);
GtkCssDimension dim = gtk_css_number_value_get_dimension (val);
guint i;
for (i = 1; i < data.values->len; i++)
{
val = (GtkCssValue *) g_ptr_array_index (data.values, i);
if (gtk_css_number_value_get_dimension (val) != dim)
break;
}
if (i < data.values->len)
gtk_css_parser_error_syntax (parser, "Inconsistent types in '%s('", function);
else
result = gtk_css_math_value_new (type, 0, (GtkCssValue **)data.values->pdata, data.values->len);
}
if (result == NULL)
{
for (guint i = 0; i < data.values->len; i++)
gtk_css_value_unref ((GtkCssValue *)g_ptr_array_index (data.values, i));
}
g_ptr_array_unref (data.values);
return result;
}
+1 -16
View File
@@ -23,21 +23,6 @@ G_BEGIN_DECLS
GtkCssValue * gtk_css_calc_value_parse (GtkCssParser *parser, GtkCssValue * gtk_css_calc_value_parse (GtkCssParser *parser,
GtkCssNumberParseFlags flags); GtkCssNumberParseFlags flags);
GtkCssValue * gtk_css_clamp_value_parse (GtkCssParser *parser,
GtkCssNumberParseFlags flags,
guint type);
GtkCssValue * gtk_css_round_value_parse (GtkCssParser *parser,
GtkCssNumberParseFlags flags,
guint type);
GtkCssValue * gtk_css_arg2_value_parse (GtkCssParser *parser,
GtkCssNumberParseFlags flags,
guint min_args,
guint max_args,
const char *function,
guint type);
GtkCssValue * gtk_css_argn_value_parse (GtkCssParser *parser,
GtkCssNumberParseFlags flags,
const char *function,
guint type);
G_END_DECLS G_END_DECLS
+166 -746
View File
File diff suppressed because it is too large Load Diff
+10 -9
View File
@@ -27,23 +27,24 @@ G_BEGIN_DECLS
GtkCssValue * gtk_css_color_value_new_transparent (void) G_GNUC_PURE; GtkCssValue * gtk_css_color_value_new_transparent (void) G_GNUC_PURE;
GtkCssValue * gtk_css_color_value_new_white (void) G_GNUC_PURE; GtkCssValue * gtk_css_color_value_new_white (void) G_GNUC_PURE;
GtkCssValue * gtk_css_color_value_new_literal (const GdkRGBA *color) G_GNUC_PURE; GtkCssValue * _gtk_css_color_value_new_literal (const GdkRGBA *color) G_GNUC_PURE;
GtkCssValue * gtk_css_color_value_new_name (const char *name) G_GNUC_PURE; GtkCssValue * _gtk_css_color_value_new_name (const char *name) G_GNUC_PURE;
GtkCssValue * gtk_css_color_value_new_shade (GtkCssValue *color, GtkCssValue * _gtk_css_color_value_new_shade (GtkCssValue *color,
double factor) G_GNUC_PURE; double factor) G_GNUC_PURE;
GtkCssValue * gtk_css_color_value_new_alpha (GtkCssValue *color, GtkCssValue * _gtk_css_color_value_new_alpha (GtkCssValue *color,
double factor) G_GNUC_PURE; double factor) G_GNUC_PURE;
GtkCssValue * gtk_css_color_value_new_mix (GtkCssValue *color1, GtkCssValue * _gtk_css_color_value_new_mix (GtkCssValue *color1,
GtkCssValue *color2, GtkCssValue *color2,
double factor) G_GNUC_PURE; double factor) G_GNUC_PURE;
GtkCssValue * gtk_css_color_value_new_current_color (void) G_GNUC_PURE; GtkCssValue * _gtk_css_color_value_new_current_color (void) G_GNUC_PURE;
gboolean gtk_css_color_value_can_parse (GtkCssParser *parser); gboolean gtk_css_color_value_can_parse (GtkCssParser *parser);
GtkCssValue * gtk_css_color_value_parse (GtkCssParser *parser); GtkCssValue * _gtk_css_color_value_parse (GtkCssParser *parser);
GtkCssValue * gtk_css_color_value_resolve (GtkCssValue *color, GtkCssValue * _gtk_css_color_value_resolve (GtkCssValue *color,
GtkStyleProvider *provider, GtkStyleProvider *provider,
GtkCssValue *current); GtkCssValue *current,
GSList *cycle_list);
const GdkRGBA * gtk_css_color_value_get_rgba (const GtkCssValue *color) G_GNUC_CONST; const GdkRGBA * gtk_css_color_value_get_rgba (const GtkCssValue *color) G_GNUC_CONST;
+34 -31
View File
@@ -30,26 +30,29 @@ struct _GtkCssValue {
static void static void
gtk_css_value_corner_free (GtkCssValue *value) gtk_css_value_corner_free (GtkCssValue *value)
{ {
gtk_css_value_unref (value->x); _gtk_css_value_unref (value->x);
gtk_css_value_unref (value->y); _gtk_css_value_unref (value->y);
g_free (value); g_free (value);
} }
static GtkCssValue * static GtkCssValue *
gtk_css_value_corner_compute (GtkCssValue *corner, gtk_css_value_corner_compute (GtkCssValue *corner,
guint property_id, guint property_id,
GtkCssComputeContext *context) GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssVariableSet *variables)
{ {
GtkCssValue *x, *y; GtkCssValue *x, *y;
x = gtk_css_value_compute (corner->x, property_id, context); x = _gtk_css_value_compute (corner->x, property_id, provider, style, parent_style, variables);
y = gtk_css_value_compute (corner->y, property_id, context); y = _gtk_css_value_compute (corner->y, property_id, provider, style, parent_style, variables);
if (x == corner->x && y == corner->y) if (x == corner->x && y == corner->y)
{ {
gtk_css_value_unref (x); _gtk_css_value_unref (x);
gtk_css_value_unref (y); _gtk_css_value_unref (y);
return gtk_css_value_ref (corner); return _gtk_css_value_ref (corner);
} }
return _gtk_css_corner_value_new (x, y); return _gtk_css_corner_value_new (x, y);
@@ -59,8 +62,8 @@ static gboolean
gtk_css_value_corner_equal (const GtkCssValue *corner1, gtk_css_value_corner_equal (const GtkCssValue *corner1,
const GtkCssValue *corner2) const GtkCssValue *corner2)
{ {
return gtk_css_value_equal (corner1->x, corner2->x) return _gtk_css_value_equal (corner1->x, corner2->x)
&& gtk_css_value_equal (corner1->y, corner2->y); && _gtk_css_value_equal (corner1->y, corner2->y);
} }
static GtkCssValue * static GtkCssValue *
@@ -71,13 +74,13 @@ gtk_css_value_corner_transition (GtkCssValue *start,
{ {
GtkCssValue *x, *y; GtkCssValue *x, *y;
x = gtk_css_value_transition (start->x, end->x, property_id, progress); x = _gtk_css_value_transition (start->x, end->x, property_id, progress);
if (x == NULL) if (x == NULL)
return NULL; return NULL;
y = gtk_css_value_transition (start->y, end->y, property_id, progress); y = _gtk_css_value_transition (start->y, end->y, property_id, progress);
if (y == NULL) if (y == NULL)
{ {
gtk_css_value_unref (x); _gtk_css_value_unref (x);
return NULL; return NULL;
} }
@@ -88,11 +91,11 @@ static void
gtk_css_value_corner_print (const GtkCssValue *corner, gtk_css_value_corner_print (const GtkCssValue *corner,
GString *string) GString *string)
{ {
gtk_css_value_print (corner->x, string); _gtk_css_value_print (corner->x, string);
if (!gtk_css_value_equal (corner->x, corner->y)) if (!_gtk_css_value_equal (corner->x, corner->y))
{ {
g_string_append_c (string, ' '); g_string_append_c (string, ' ');
gtk_css_value_print (corner->y, string); _gtk_css_value_print (corner->y, string);
} }
} }
@@ -158,7 +161,7 @@ _gtk_css_corner_value_new (GtkCssValue *x,
} }
} }
result = gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_CORNER); result = _gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_CORNER);
result->x = x; result->x = x;
result->y = y; result->y = y;
@@ -170,24 +173,24 @@ _gtk_css_corner_value_parse (GtkCssParser *parser)
{ {
GtkCssValue *x, *y; GtkCssValue *x, *y;
x = gtk_css_number_value_parse (parser, x = _gtk_css_number_value_parse (parser,
GTK_CSS_POSITIVE_ONLY GTK_CSS_POSITIVE_ONLY
| GTK_CSS_PARSE_PERCENT | GTK_CSS_PARSE_PERCENT
| GTK_CSS_PARSE_LENGTH); | GTK_CSS_PARSE_LENGTH);
if (x == NULL) if (x == NULL)
return NULL; return NULL;
if (!gtk_css_number_value_can_parse (parser)) if (!gtk_css_number_value_can_parse (parser))
y = gtk_css_value_ref (x); y = _gtk_css_value_ref (x);
else else
{ {
y = gtk_css_number_value_parse (parser, y = _gtk_css_number_value_parse (parser,
GTK_CSS_POSITIVE_ONLY GTK_CSS_POSITIVE_ONLY
| GTK_CSS_PARSE_PERCENT | GTK_CSS_PARSE_PERCENT
| GTK_CSS_PARSE_LENGTH); | GTK_CSS_PARSE_LENGTH);
if (y == NULL) if (y == NULL)
{ {
gtk_css_value_unref (x); _gtk_css_value_unref (x);
return NULL; return NULL;
} }
} }
@@ -202,7 +205,7 @@ _gtk_css_corner_value_get_x (const GtkCssValue *corner,
g_return_val_if_fail (corner != NULL, 0.0); g_return_val_if_fail (corner != NULL, 0.0);
g_return_val_if_fail (corner->class == &GTK_CSS_VALUE_CORNER, 0.0); g_return_val_if_fail (corner->class == &GTK_CSS_VALUE_CORNER, 0.0);
return gtk_css_number_value_get (corner->x, one_hundred_percent); return _gtk_css_number_value_get (corner->x, one_hundred_percent);
} }
double double
@@ -212,7 +215,7 @@ _gtk_css_corner_value_get_y (const GtkCssValue *corner,
g_return_val_if_fail (corner != NULL, 0.0); g_return_val_if_fail (corner != NULL, 0.0);
g_return_val_if_fail (corner->class == &GTK_CSS_VALUE_CORNER, 0.0); g_return_val_if_fail (corner->class == &GTK_CSS_VALUE_CORNER, 0.0);
return gtk_css_number_value_get (corner->y, one_hundred_percent); return _gtk_css_number_value_get (corner->y, one_hundred_percent);
} }
gboolean gboolean
+9 -6
View File
@@ -50,11 +50,14 @@ gtk_css_value_ease_free (GtkCssValue *value)
} }
static GtkCssValue * static GtkCssValue *
gtk_css_value_ease_compute (GtkCssValue *value, gtk_css_value_ease_compute (GtkCssValue *value,
guint property_id, guint property_id,
GtkCssComputeContext *context) GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssVariableSet *variables)
{ {
return gtk_css_value_ref (value); return _gtk_css_value_ref (value);
} }
static gboolean static gboolean
@@ -156,7 +159,7 @@ _gtk_css_ease_value_new_cubic_bezier (double x1,
g_return_val_if_fail (x2 >= 0.0, NULL); g_return_val_if_fail (x2 >= 0.0, NULL);
g_return_val_if_fail (x2 <= 1.0, NULL); g_return_val_if_fail (x2 <= 1.0, NULL);
value = gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_EASE); value = _gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_EASE);
value->type = GTK_CSS_EASE_CUBIC_BEZIER; value->type = GTK_CSS_EASE_CUBIC_BEZIER;
value->u.cubic.x1 = x1; value->u.cubic.x1 = x1;
@@ -176,7 +179,7 @@ _gtk_css_ease_value_new_steps (guint n_steps,
g_return_val_if_fail (n_steps > 0, NULL); g_return_val_if_fail (n_steps > 0, NULL);
value = gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_EASE); value = _gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_EASE);
value->type = GTK_CSS_EASE_STEPS; value->type = GTK_CSS_EASE_STEPS;
value->u.steps.steps = n_steps; value->u.steps.steps = n_steps;
+66 -61
View File
@@ -41,11 +41,14 @@ gtk_css_value_enum_free (GtkCssValue *value)
} }
static GtkCssValue * static GtkCssValue *
gtk_css_value_enum_compute (GtkCssValue *value, gtk_css_value_enum_compute (GtkCssValue *value,
guint property_id, guint property_id,
GtkCssComputeContext *context) GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssVariableSet *variables)
{ {
return gtk_css_value_ref (value); return _gtk_css_value_ref (value);
} }
static gboolean static gboolean
@@ -102,7 +105,7 @@ _gtk_css_border_style_value_new (GtkBorderStyle border_style)
{ {
g_return_val_if_fail (border_style < G_N_ELEMENTS (border_style_values), NULL); g_return_val_if_fail (border_style < G_N_ELEMENTS (border_style_values), NULL);
return gtk_css_value_ref (&border_style_values[border_style]); return _gtk_css_value_ref (&border_style_values[border_style]);
} }
GtkCssValue * GtkCssValue *
@@ -115,7 +118,7 @@ _gtk_css_border_style_value_try_parse (GtkCssParser *parser)
for (i = 0; i < G_N_ELEMENTS (border_style_values); i++) for (i = 0; i < G_N_ELEMENTS (border_style_values); i++)
{ {
if (gtk_css_parser_try_ident (parser, border_style_values[i].name)) if (gtk_css_parser_try_ident (parser, border_style_values[i].name))
return gtk_css_value_ref (&border_style_values[i]); return _gtk_css_value_ref (&border_style_values[i]);
} }
return NULL; return NULL;
@@ -166,7 +169,7 @@ _gtk_css_blend_mode_value_new (GskBlendMode blend_mode)
{ {
g_return_val_if_fail (blend_mode < G_N_ELEMENTS (blend_mode_values), NULL); g_return_val_if_fail (blend_mode < G_N_ELEMENTS (blend_mode_values), NULL);
return gtk_css_value_ref (&blend_mode_values[blend_mode]); return _gtk_css_value_ref (&blend_mode_values[blend_mode]);
} }
GtkCssValue * GtkCssValue *
@@ -179,7 +182,7 @@ _gtk_css_blend_mode_value_try_parse (GtkCssParser *parser)
for (i = 0; i < G_N_ELEMENTS (blend_mode_values); i++) for (i = 0; i < G_N_ELEMENTS (blend_mode_values); i++)
{ {
if (gtk_css_parser_try_ident (parser, blend_mode_values[i].name)) if (gtk_css_parser_try_ident (parser, blend_mode_values[i].name))
return gtk_css_value_ref (&blend_mode_values[i]); return _gtk_css_value_ref (&blend_mode_values[i]);
} }
return NULL; return NULL;
@@ -198,7 +201,7 @@ _gtk_css_blend_mode_value_get (const GtkCssValue *value)
static double static double
get_dpi (GtkCssStyle *style) get_dpi (GtkCssStyle *style)
{ {
return gtk_css_number_value_get (style->core->dpi, 96); return _gtk_css_number_value_get (style->core->dpi, 96);
} }
/* XXX: Kinda bad to have that machinery here, nobody expects vital font /* XXX: Kinda bad to have that machinery here, nobody expects vital font
@@ -227,14 +230,13 @@ gtk_css_font_size_get_default_px (GtkStyleProvider *provider,
} }
static GtkCssValue * static GtkCssValue *
gtk_css_value_font_size_compute (GtkCssValue *value, gtk_css_value_font_size_compute (GtkCssValue *value,
guint property_id, guint property_id,
GtkCssComputeContext *context) GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssVariableSet *variables)
{ {
GtkStyleProvider *provider = context->provider;
GtkCssStyle *style = context->style;
GtkCssStyle *parent_style = context->parent_style;
double font_size; double font_size;
switch (value->value) switch (value->value)
@@ -265,7 +267,7 @@ gtk_css_value_font_size_compute (GtkCssValue *value,
break; break;
case GTK_CSS_FONT_SIZE_SMALLER: case GTK_CSS_FONT_SIZE_SMALLER:
if (parent_style) if (parent_style)
font_size = gtk_css_number_value_get (parent_style->core->font_size, 100); font_size = _gtk_css_number_value_get (parent_style->core->font_size, 100);
else else
font_size = gtk_css_font_size_get_default_px (provider, style); font_size = gtk_css_font_size_get_default_px (provider, style);
/* This is what WebKit does... */ /* This is what WebKit does... */
@@ -273,7 +275,7 @@ gtk_css_value_font_size_compute (GtkCssValue *value,
break; break;
case GTK_CSS_FONT_SIZE_LARGER: case GTK_CSS_FONT_SIZE_LARGER:
if (parent_style) if (parent_style)
font_size = gtk_css_number_value_get (parent_style->core->font_size, 100); font_size = _gtk_css_number_value_get (parent_style->core->font_size, 100);
else else
font_size = gtk_css_font_size_get_default_px (provider, style); font_size = gtk_css_font_size_get_default_px (provider, style);
/* This is what WebKit does... */ /* This is what WebKit does... */
@@ -281,7 +283,7 @@ gtk_css_value_font_size_compute (GtkCssValue *value,
break; break;
} }
return gtk_css_number_value_new (font_size, GTK_CSS_PX); return _gtk_css_number_value_new (font_size, GTK_CSS_PX);
} }
static const GtkCssValueClass GTK_CSS_VALUE_FONT_SIZE = { static const GtkCssValueClass GTK_CSS_VALUE_FONT_SIZE = {
@@ -312,7 +314,7 @@ _gtk_css_font_size_value_new (GtkCssFontSize font_size)
{ {
g_return_val_if_fail (font_size < G_N_ELEMENTS (font_size_values), NULL); g_return_val_if_fail (font_size < G_N_ELEMENTS (font_size_values), NULL);
return gtk_css_value_ref (&font_size_values[font_size]); return _gtk_css_value_ref (&font_size_values[font_size]);
} }
GtkCssValue * GtkCssValue *
@@ -325,7 +327,7 @@ _gtk_css_font_size_value_try_parse (GtkCssParser *parser)
for (i = 0; i < G_N_ELEMENTS (font_size_values); i++) for (i = 0; i < G_N_ELEMENTS (font_size_values); i++)
{ {
if (gtk_css_parser_try_ident (parser, font_size_values[i].name)) if (gtk_css_parser_try_ident (parser, font_size_values[i].name))
return gtk_css_value_ref (&font_size_values[i]); return _gtk_css_value_ref (&font_size_values[i]);
} }
return NULL; return NULL;
@@ -363,7 +365,7 @@ _gtk_css_font_style_value_new (PangoStyle font_style)
{ {
g_return_val_if_fail (font_style < G_N_ELEMENTS (font_style_values), NULL); g_return_val_if_fail (font_style < G_N_ELEMENTS (font_style_values), NULL);
return gtk_css_value_ref (&font_style_values[font_style]); return _gtk_css_value_ref (&font_style_values[font_style]);
} }
GtkCssValue * GtkCssValue *
@@ -376,7 +378,7 @@ _gtk_css_font_style_value_try_parse (GtkCssParser *parser)
for (i = 0; i < G_N_ELEMENTS (font_style_values); i++) for (i = 0; i < G_N_ELEMENTS (font_style_values); i++)
{ {
if (gtk_css_parser_try_ident (parser, font_style_values[i].name)) if (gtk_css_parser_try_ident (parser, font_style_values[i].name))
return gtk_css_value_ref (&font_style_values[i]); return _gtk_css_value_ref (&font_style_values[i]);
} }
return NULL; return NULL;
@@ -396,18 +398,21 @@ _gtk_css_font_style_value_get (const GtkCssValue *value)
#define LIGHTER -2 #define LIGHTER -2
static GtkCssValue * static GtkCssValue *
gtk_css_value_font_weight_compute (GtkCssValue *value, gtk_css_value_font_weight_compute (GtkCssValue *value,
guint property_id, guint property_id,
GtkCssComputeContext *context) GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssVariableSet *variables)
{ {
PangoWeight new_weight; PangoWeight new_weight;
int parent_value; int parent_value;
if (value->value >= 0) if (value->value >= 0)
return gtk_css_value_ref (value); return _gtk_css_value_ref (value);
if (context->parent_style) if (parent_style)
parent_value = gtk_css_number_value_get (context->parent_style->font->font_weight, 100); parent_value = _gtk_css_number_value_get (parent_style->font->font_weight, 100);
else else
parent_value = 400; parent_value = 400;
@@ -435,7 +440,7 @@ gtk_css_value_font_weight_compute (GtkCssValue *value,
new_weight = PANGO_WEIGHT_NORMAL; new_weight = PANGO_WEIGHT_NORMAL;
} }
return gtk_css_number_value_new (new_weight, GTK_CSS_NUMBER); return _gtk_css_number_value_new (new_weight, GTK_CSS_NUMBER);
} }
static const GtkCssValueClass GTK_CSS_VALUE_FONT_WEIGHT = { static const GtkCssValueClass GTK_CSS_VALUE_FONT_WEIGHT = {
@@ -464,13 +469,13 @@ gtk_css_font_weight_value_try_parse (GtkCssParser *parser)
for (i = 0; i < G_N_ELEMENTS (font_weight_values); i++) for (i = 0; i < G_N_ELEMENTS (font_weight_values); i++)
{ {
if (gtk_css_parser_try_ident (parser, font_weight_values[i].name)) if (gtk_css_parser_try_ident (parser, font_weight_values[i].name))
return gtk_css_value_ref (&font_weight_values[i]); return _gtk_css_value_ref (&font_weight_values[i]);
} }
if (gtk_css_parser_try_ident (parser, "normal")) if (gtk_css_parser_try_ident (parser, "normal"))
return gtk_css_number_value_new (PANGO_WEIGHT_NORMAL, GTK_CSS_NUMBER); return _gtk_css_number_value_new (PANGO_WEIGHT_NORMAL, GTK_CSS_NUMBER);
if (gtk_css_parser_try_ident (parser, "bold")) if (gtk_css_parser_try_ident (parser, "bold"))
return gtk_css_number_value_new (PANGO_WEIGHT_BOLD, GTK_CSS_NUMBER); return _gtk_css_number_value_new (PANGO_WEIGHT_BOLD, GTK_CSS_NUMBER);
return NULL; return NULL;
} }
@@ -516,7 +521,7 @@ _gtk_css_font_stretch_value_new (PangoStretch font_stretch)
{ {
g_return_val_if_fail (font_stretch < G_N_ELEMENTS (font_stretch_values), NULL); g_return_val_if_fail (font_stretch < G_N_ELEMENTS (font_stretch_values), NULL);
return gtk_css_value_ref (&font_stretch_values[font_stretch]); return _gtk_css_value_ref (&font_stretch_values[font_stretch]);
} }
GtkCssValue * GtkCssValue *
@@ -529,7 +534,7 @@ _gtk_css_font_stretch_value_try_parse (GtkCssParser *parser)
for (i = 0; i < G_N_ELEMENTS (font_stretch_values); i++) for (i = 0; i < G_N_ELEMENTS (font_stretch_values); i++)
{ {
if (gtk_css_parser_try_ident (parser, font_stretch_values[i].name)) if (gtk_css_parser_try_ident (parser, font_stretch_values[i].name))
return gtk_css_value_ref (&font_stretch_values[i]); return _gtk_css_value_ref (&font_stretch_values[i]);
} }
return NULL; return NULL;
@@ -567,7 +572,7 @@ _gtk_css_text_decoration_style_value_new (GtkTextDecorationStyle style)
{ {
g_return_val_if_fail (style < G_N_ELEMENTS (text_decoration_style_values), NULL); g_return_val_if_fail (style < G_N_ELEMENTS (text_decoration_style_values), NULL);
return gtk_css_value_ref (&text_decoration_style_values[style]); return _gtk_css_value_ref (&text_decoration_style_values[style]);
} }
GtkCssValue * GtkCssValue *
@@ -580,7 +585,7 @@ _gtk_css_text_decoration_style_value_try_parse (GtkCssParser *parser)
for (i = 0; i < G_N_ELEMENTS (text_decoration_style_values); i++) for (i = 0; i < G_N_ELEMENTS (text_decoration_style_values); i++)
{ {
if (gtk_css_parser_try_ident (parser, text_decoration_style_values[i].name)) if (gtk_css_parser_try_ident (parser, text_decoration_style_values[i].name))
return gtk_css_value_ref (&text_decoration_style_values[i]); return _gtk_css_value_ref (&text_decoration_style_values[i]);
} }
return NULL; return NULL;
@@ -621,7 +626,7 @@ _gtk_css_area_value_new (GtkCssArea area)
for (i = 0; i < G_N_ELEMENTS (area_values); i++) for (i = 0; i < G_N_ELEMENTS (area_values); i++)
{ {
if (area_values[i].value == area) if (area_values[i].value == area)
return gtk_css_value_ref (&area_values[i]); return _gtk_css_value_ref (&area_values[i]);
} }
g_return_val_if_reached (NULL); g_return_val_if_reached (NULL);
@@ -637,7 +642,7 @@ _gtk_css_area_value_try_parse (GtkCssParser *parser)
for (i = 0; i < G_N_ELEMENTS (area_values); i++) for (i = 0; i < G_N_ELEMENTS (area_values); i++)
{ {
if (gtk_css_parser_try_ident (parser, area_values[i].name)) if (gtk_css_parser_try_ident (parser, area_values[i].name))
return gtk_css_value_ref (&area_values[i]); return _gtk_css_value_ref (&area_values[i]);
} }
return NULL; return NULL;
@@ -679,7 +684,7 @@ _gtk_css_direction_value_new (GtkCssDirection direction)
for (i = 0; i < G_N_ELEMENTS (direction_values); i++) for (i = 0; i < G_N_ELEMENTS (direction_values); i++)
{ {
if (direction_values[i].value == direction) if (direction_values[i].value == direction)
return gtk_css_value_ref (&direction_values[i]); return _gtk_css_value_ref (&direction_values[i]);
} }
g_return_val_if_reached (NULL); g_return_val_if_reached (NULL);
@@ -698,7 +703,7 @@ _gtk_css_direction_value_try_parse (GtkCssParser *parser)
for (i = G_N_ELEMENTS (direction_values) - 1; i >= 0; i--) for (i = G_N_ELEMENTS (direction_values) - 1; i >= 0; i--)
{ {
if (gtk_css_parser_try_ident (parser, direction_values[i].name)) if (gtk_css_parser_try_ident (parser, direction_values[i].name))
return gtk_css_value_ref (&direction_values[i]); return _gtk_css_value_ref (&direction_values[i]);
} }
return NULL; return NULL;
@@ -738,7 +743,7 @@ _gtk_css_play_state_value_new (GtkCssPlayState play_state)
for (i = 0; i < G_N_ELEMENTS (play_state_values); i++) for (i = 0; i < G_N_ELEMENTS (play_state_values); i++)
{ {
if (play_state_values[i].value == play_state) if (play_state_values[i].value == play_state)
return gtk_css_value_ref (&play_state_values[i]); return _gtk_css_value_ref (&play_state_values[i]);
} }
g_return_val_if_reached (NULL); g_return_val_if_reached (NULL);
@@ -754,7 +759,7 @@ _gtk_css_play_state_value_try_parse (GtkCssParser *parser)
for (i = 0; i < G_N_ELEMENTS (play_state_values); i++) for (i = 0; i < G_N_ELEMENTS (play_state_values); i++)
{ {
if (gtk_css_parser_try_ident (parser, play_state_values[i].name)) if (gtk_css_parser_try_ident (parser, play_state_values[i].name))
return gtk_css_value_ref (&play_state_values[i]); return _gtk_css_value_ref (&play_state_values[i]);
} }
return NULL; return NULL;
@@ -796,7 +801,7 @@ _gtk_css_fill_mode_value_new (GtkCssFillMode fill_mode)
for (i = 0; i < G_N_ELEMENTS (fill_mode_values); i++) for (i = 0; i < G_N_ELEMENTS (fill_mode_values); i++)
{ {
if (fill_mode_values[i].value == fill_mode) if (fill_mode_values[i].value == fill_mode)
return gtk_css_value_ref (&fill_mode_values[i]); return _gtk_css_value_ref (&fill_mode_values[i]);
} }
g_return_val_if_reached (NULL); g_return_val_if_reached (NULL);
@@ -812,7 +817,7 @@ _gtk_css_fill_mode_value_try_parse (GtkCssParser *parser)
for (i = 0; i < G_N_ELEMENTS (fill_mode_values); i++) for (i = 0; i < G_N_ELEMENTS (fill_mode_values); i++)
{ {
if (gtk_css_parser_try_ident (parser, fill_mode_values[i].name)) if (gtk_css_parser_try_ident (parser, fill_mode_values[i].name))
return gtk_css_value_ref (&fill_mode_values[i]); return _gtk_css_value_ref (&fill_mode_values[i]);
} }
return NULL; return NULL;
@@ -853,7 +858,7 @@ _gtk_css_icon_style_value_new (GtkCssIconStyle icon_style)
for (i = 0; i < G_N_ELEMENTS (icon_style_values); i++) for (i = 0; i < G_N_ELEMENTS (icon_style_values); i++)
{ {
if (icon_style_values[i].value == icon_style) if (icon_style_values[i].value == icon_style)
return gtk_css_value_ref (&icon_style_values[i]); return _gtk_css_value_ref (&icon_style_values[i]);
} }
g_return_val_if_reached (NULL); g_return_val_if_reached (NULL);
@@ -869,7 +874,7 @@ _gtk_css_icon_style_value_try_parse (GtkCssParser *parser)
for (i = 0; i < G_N_ELEMENTS (icon_style_values); i++) for (i = 0; i < G_N_ELEMENTS (icon_style_values); i++)
{ {
if (gtk_css_parser_try_ident (parser, icon_style_values[i].name)) if (gtk_css_parser_try_ident (parser, icon_style_values[i].name))
return gtk_css_value_ref (&icon_style_values[i]); return _gtk_css_value_ref (&icon_style_values[i]);
} }
return NULL; return NULL;
@@ -910,7 +915,7 @@ _gtk_css_font_kerning_value_new (GtkCssFontKerning kerning)
for (i = 0; i < G_N_ELEMENTS (font_kerning_values); i++) for (i = 0; i < G_N_ELEMENTS (font_kerning_values); i++)
{ {
if (font_kerning_values[i].value == kerning) if (font_kerning_values[i].value == kerning)
return gtk_css_value_ref (&font_kerning_values[i]); return _gtk_css_value_ref (&font_kerning_values[i]);
} }
g_return_val_if_reached (NULL); g_return_val_if_reached (NULL);
@@ -926,7 +931,7 @@ _gtk_css_font_kerning_value_try_parse (GtkCssParser *parser)
for (i = 0; i < G_N_ELEMENTS (font_kerning_values); i++) for (i = 0; i < G_N_ELEMENTS (font_kerning_values); i++)
{ {
if (gtk_css_parser_try_ident (parser, font_kerning_values[i].name)) if (gtk_css_parser_try_ident (parser, font_kerning_values[i].name))
return gtk_css_value_ref (&font_kerning_values[i]); return _gtk_css_value_ref (&font_kerning_values[i]);
} }
return NULL; return NULL;
@@ -967,7 +972,7 @@ _gtk_css_font_variant_position_value_new (GtkCssFontVariantPosition position)
for (i = 0; i < G_N_ELEMENTS (font_variant_position_values); i++) for (i = 0; i < G_N_ELEMENTS (font_variant_position_values); i++)
{ {
if (font_variant_position_values[i].value == position) if (font_variant_position_values[i].value == position)
return gtk_css_value_ref (&font_variant_position_values[i]); return _gtk_css_value_ref (&font_variant_position_values[i]);
} }
g_return_val_if_reached (NULL); g_return_val_if_reached (NULL);
@@ -983,7 +988,7 @@ _gtk_css_font_variant_position_value_try_parse (GtkCssParser *parser)
for (i = 0; i < G_N_ELEMENTS (font_variant_position_values); i++) for (i = 0; i < G_N_ELEMENTS (font_variant_position_values); i++)
{ {
if (gtk_css_parser_try_ident (parser, font_variant_position_values[i].name)) if (gtk_css_parser_try_ident (parser, font_variant_position_values[i].name))
return gtk_css_value_ref (&font_variant_position_values[i]); return _gtk_css_value_ref (&font_variant_position_values[i]);
} }
return NULL; return NULL;
@@ -1028,7 +1033,7 @@ _gtk_css_font_variant_caps_value_new (GtkCssFontVariantCaps caps)
for (i = 0; i < G_N_ELEMENTS (font_variant_caps_values); i++) for (i = 0; i < G_N_ELEMENTS (font_variant_caps_values); i++)
{ {
if (font_variant_caps_values[i].value == caps) if (font_variant_caps_values[i].value == caps)
return gtk_css_value_ref (&font_variant_caps_values[i]); return _gtk_css_value_ref (&font_variant_caps_values[i]);
} }
g_return_val_if_reached (NULL); g_return_val_if_reached (NULL);
@@ -1044,7 +1049,7 @@ _gtk_css_font_variant_caps_value_try_parse (GtkCssParser *parser)
for (i = 0; i < G_N_ELEMENTS (font_variant_caps_values); i++) for (i = 0; i < G_N_ELEMENTS (font_variant_caps_values); i++)
{ {
if (gtk_css_parser_try_ident (parser, font_variant_caps_values[i].name)) if (gtk_css_parser_try_ident (parser, font_variant_caps_values[i].name))
return gtk_css_value_ref (&font_variant_caps_values[i]); return _gtk_css_value_ref (&font_variant_caps_values[i]);
} }
return NULL; return NULL;
@@ -1084,7 +1089,7 @@ _gtk_css_font_variant_alternate_value_new (GtkCssFontVariantAlternate alternate)
for (i = 0; i < G_N_ELEMENTS (font_variant_alternate_values); i++) for (i = 0; i < G_N_ELEMENTS (font_variant_alternate_values); i++)
{ {
if (font_variant_alternate_values[i].value == alternate) if (font_variant_alternate_values[i].value == alternate)
return gtk_css_value_ref (&font_variant_alternate_values[i]); return _gtk_css_value_ref (&font_variant_alternate_values[i]);
} }
g_return_val_if_reached (NULL); g_return_val_if_reached (NULL);
@@ -1100,7 +1105,7 @@ _gtk_css_font_variant_alternate_value_try_parse (GtkCssParser *parser)
for (i = 0; i < G_N_ELEMENTS (font_variant_alternate_values); i++) for (i = 0; i < G_N_ELEMENTS (font_variant_alternate_values); i++)
{ {
if (gtk_css_parser_try_ident (parser, font_variant_alternate_values[i].name)) if (gtk_css_parser_try_ident (parser, font_variant_alternate_values[i].name))
return gtk_css_value_ref (&font_variant_alternate_values[i]); return _gtk_css_value_ref (&font_variant_alternate_values[i]);
} }
return NULL; return NULL;
@@ -1197,7 +1202,7 @@ _gtk_css_text_decoration_line_value_new (GtkTextDecorationLine line)
if (!text_decoration_line_is_valid (line)) if (!text_decoration_line_is_valid (line))
return NULL; return NULL;
value = gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_TEXT_DECORATION_LINE); value = _gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_TEXT_DECORATION_LINE);
value->value = line; value->value = line;
value->name = NULL; value->name = NULL;
value->is_computed = TRUE; value->is_computed = TRUE;
@@ -1306,7 +1311,7 @@ _gtk_css_font_variant_ligature_value_new (GtkCssFontVariantLigature ligatures)
if (!ligature_value_is_valid (ligatures)) if (!ligature_value_is_valid (ligatures))
return NULL; return NULL;
value = gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_FONT_VARIANT_LIGATURE); value = _gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_FONT_VARIANT_LIGATURE);
value->value = ligatures; value->value = ligatures;
value->name = NULL; value->name = NULL;
value->is_computed = TRUE; value->is_computed = TRUE;
@@ -1410,7 +1415,7 @@ _gtk_css_font_variant_numeric_value_new (GtkCssFontVariantNumeric numeric)
if (!numeric_value_is_valid (numeric)) if (!numeric_value_is_valid (numeric))
return NULL; return NULL;
value = gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_FONT_VARIANT_NUMERIC); value = _gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_FONT_VARIANT_NUMERIC);
value->value = numeric; value->value = numeric;
value->name = NULL; value->name = NULL;
value->is_computed = TRUE; value->is_computed = TRUE;
@@ -1521,7 +1526,7 @@ _gtk_css_font_variant_east_asian_value_new (GtkCssFontVariantEastAsian east_asia
if (!east_asian_value_is_valid (east_asian)) if (!east_asian_value_is_valid (east_asian))
return NULL; return NULL;
value = gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_FONT_VARIANT_EAST_ASIAN); value = _gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_FONT_VARIANT_EAST_ASIAN);
value->value = east_asian; value->value = east_asian;
value->name = NULL; value->name = NULL;
value->is_computed = TRUE; value->is_computed = TRUE;
@@ -1592,7 +1597,7 @@ _gtk_css_text_transform_value_new (GtkTextTransform transform)
{ {
g_return_val_if_fail (transform < G_N_ELEMENTS (text_transform_values), NULL); g_return_val_if_fail (transform < G_N_ELEMENTS (text_transform_values), NULL);
return gtk_css_value_ref (&text_transform_values[transform]); return _gtk_css_value_ref (&text_transform_values[transform]);
} }
GtkCssValue * GtkCssValue *
@@ -1605,7 +1610,7 @@ _gtk_css_text_transform_value_try_parse (GtkCssParser *parser)
for (i = 0; i < G_N_ELEMENTS (text_transform_values); i++) for (i = 0; i < G_N_ELEMENTS (text_transform_values); i++)
{ {
if (gtk_css_parser_try_ident (parser, text_transform_values[i].name)) if (gtk_css_parser_try_ident (parser, text_transform_values[i].name))
return gtk_css_value_ref (&text_transform_values[i]); return _gtk_css_value_ref (&text_transform_values[i]);
} }
return NULL; return NULL;
+94 -85
View File
@@ -65,34 +65,34 @@ gtk_css_filter_clear (GtkCssFilter *filter)
switch (filter->type) switch (filter->type)
{ {
case GTK_CSS_FILTER_BRIGHTNESS: case GTK_CSS_FILTER_BRIGHTNESS:
gtk_css_value_unref (filter->brightness.value); _gtk_css_value_unref (filter->brightness.value);
break; break;
case GTK_CSS_FILTER_CONTRAST: case GTK_CSS_FILTER_CONTRAST:
gtk_css_value_unref (filter->contrast.value); _gtk_css_value_unref (filter->contrast.value);
break; break;
case GTK_CSS_FILTER_GRAYSCALE: case GTK_CSS_FILTER_GRAYSCALE:
gtk_css_value_unref (filter->grayscale.value); _gtk_css_value_unref (filter->grayscale.value);
break; break;
case GTK_CSS_FILTER_HUE_ROTATE: case GTK_CSS_FILTER_HUE_ROTATE:
gtk_css_value_unref (filter->hue_rotate.value); _gtk_css_value_unref (filter->hue_rotate.value);
break; break;
case GTK_CSS_FILTER_INVERT: case GTK_CSS_FILTER_INVERT:
gtk_css_value_unref (filter->invert.value); _gtk_css_value_unref (filter->invert.value);
break; break;
case GTK_CSS_FILTER_OPACITY: case GTK_CSS_FILTER_OPACITY:
gtk_css_value_unref (filter->opacity.value); _gtk_css_value_unref (filter->opacity.value);
break; break;
case GTK_CSS_FILTER_SATURATE: case GTK_CSS_FILTER_SATURATE:
gtk_css_value_unref (filter->saturate.value); _gtk_css_value_unref (filter->saturate.value);
break; break;
case GTK_CSS_FILTER_SEPIA: case GTK_CSS_FILTER_SEPIA:
gtk_css_value_unref (filter->sepia.value); _gtk_css_value_unref (filter->sepia.value);
break; break;
case GTK_CSS_FILTER_BLUR: case GTK_CSS_FILTER_BLUR:
gtk_css_value_unref (filter->blur.value); _gtk_css_value_unref (filter->blur.value);
break; break;
case GTK_CSS_FILTER_DROP_SHADOW: case GTK_CSS_FILTER_DROP_SHADOW:
gtk_css_value_unref (filter->drop_shadow.value); _gtk_css_value_unref (filter->drop_shadow.value);
break; break;
case GTK_CSS_FILTER_NONE: case GTK_CSS_FILTER_NONE:
default: default:
@@ -108,31 +108,31 @@ gtk_css_filter_init_identity (GtkCssFilter *filter,
switch (other->type) switch (other->type)
{ {
case GTK_CSS_FILTER_BRIGHTNESS: case GTK_CSS_FILTER_BRIGHTNESS:
filter->brightness.value = gtk_css_number_value_new (1, GTK_CSS_NUMBER); filter->brightness.value = _gtk_css_number_value_new (1, GTK_CSS_NUMBER);
break; break;
case GTK_CSS_FILTER_CONTRAST: case GTK_CSS_FILTER_CONTRAST:
filter->contrast.value = gtk_css_number_value_new (1, GTK_CSS_NUMBER); filter->contrast.value = _gtk_css_number_value_new (1, GTK_CSS_NUMBER);
break; break;
case GTK_CSS_FILTER_GRAYSCALE: case GTK_CSS_FILTER_GRAYSCALE:
filter->grayscale.value = gtk_css_number_value_new (0, GTK_CSS_NUMBER); filter->grayscale.value = _gtk_css_number_value_new (0, GTK_CSS_NUMBER);
break; break;
case GTK_CSS_FILTER_HUE_ROTATE: case GTK_CSS_FILTER_HUE_ROTATE:
filter->hue_rotate.value = gtk_css_number_value_new (0, GTK_CSS_DEG); filter->hue_rotate.value = _gtk_css_number_value_new (0, GTK_CSS_DEG);
break; break;
case GTK_CSS_FILTER_INVERT: case GTK_CSS_FILTER_INVERT:
filter->invert.value = gtk_css_number_value_new (0, GTK_CSS_NUMBER); filter->invert.value = _gtk_css_number_value_new (0, GTK_CSS_NUMBER);
break; break;
case GTK_CSS_FILTER_OPACITY: case GTK_CSS_FILTER_OPACITY:
filter->opacity.value = gtk_css_number_value_new (1, GTK_CSS_NUMBER); filter->opacity.value = _gtk_css_number_value_new (1, GTK_CSS_NUMBER);
break; break;
case GTK_CSS_FILTER_SATURATE: case GTK_CSS_FILTER_SATURATE:
filter->saturate.value = gtk_css_number_value_new (1, GTK_CSS_NUMBER); filter->saturate.value = _gtk_css_number_value_new (1, GTK_CSS_NUMBER);
break; break;
case GTK_CSS_FILTER_SEPIA: case GTK_CSS_FILTER_SEPIA:
filter->sepia.value = gtk_css_number_value_new (0, GTK_CSS_NUMBER); filter->sepia.value = _gtk_css_number_value_new (0, GTK_CSS_NUMBER);
break; break;
case GTK_CSS_FILTER_BLUR: case GTK_CSS_FILTER_BLUR:
filter->blur.value = gtk_css_number_value_new (0, GTK_CSS_PX); filter->blur.value = _gtk_css_number_value_new (0, GTK_CSS_PX);
break; break;
case GTK_CSS_FILTER_DROP_SHADOW: case GTK_CSS_FILTER_DROP_SHADOW:
filter->drop_shadow.value = gtk_css_shadow_value_new_filter (other->drop_shadow.value); filter->drop_shadow.value = gtk_css_shadow_value_new_filter (other->drop_shadow.value);
@@ -160,19 +160,19 @@ gtk_css_filter_get_matrix (const GtkCssFilter *filter,
switch (filter->type) switch (filter->type)
{ {
case GTK_CSS_FILTER_BRIGHTNESS: case GTK_CSS_FILTER_BRIGHTNESS:
value = gtk_css_number_value_get (filter->brightness.value, 1.0); value = _gtk_css_number_value_get (filter->brightness.value, 1.0);
graphene_matrix_init_scale (matrix, value, value, value); graphene_matrix_init_scale (matrix, value, value, value);
graphene_vec4_init (offset, 0.0, 0.0, 0.0, 0.0); graphene_vec4_init (offset, 0.0, 0.0, 0.0, 0.0);
break; break;
case GTK_CSS_FILTER_CONTRAST: case GTK_CSS_FILTER_CONTRAST:
value = gtk_css_number_value_get (filter->contrast.value, 1.0); value = _gtk_css_number_value_get (filter->contrast.value, 1.0);
graphene_matrix_init_scale (matrix, value, value, value); graphene_matrix_init_scale (matrix, value, value, value);
graphene_vec4_init (offset, 0.5 - 0.5 * value, 0.5 - 0.5 * value, 0.5 - 0.5 * value, 0.0); graphene_vec4_init (offset, 0.5 - 0.5 * value, 0.5 - 0.5 * value, 0.5 - 0.5 * value, 0.0);
break; break;
case GTK_CSS_FILTER_GRAYSCALE: case GTK_CSS_FILTER_GRAYSCALE:
value = gtk_css_number_value_get (filter->grayscale.value, 1.0); value = _gtk_css_number_value_get (filter->grayscale.value, 1.0);
graphene_matrix_init_from_float (matrix, (float[16]) { graphene_matrix_init_from_float (matrix, (float[16]) {
1.0 - (1.0 - R) * value, R * value, R * value, 0.0, 1.0 - (1.0 - R) * value, R * value, R * value, 0.0,
G * value, 1.0 - (1.0 - G) * value, G * value, 0.0, G * value, 1.0 - (1.0 - G) * value, G * value, 0.0,
@@ -185,7 +185,7 @@ gtk_css_filter_get_matrix (const GtkCssFilter *filter,
case GTK_CSS_FILTER_HUE_ROTATE: case GTK_CSS_FILTER_HUE_ROTATE:
{ {
double c, s; double c, s;
value = gtk_css_number_value_get (filter->grayscale.value, 1.0) * G_PI / 180.0; value = _gtk_css_number_value_get (filter->grayscale.value, 1.0) * G_PI / 180.0;
c = cos (value); c = cos (value);
s = sin (value); s = sin (value);
graphene_matrix_init_from_float (matrix, (float[16]) { graphene_matrix_init_from_float (matrix, (float[16]) {
@@ -208,13 +208,13 @@ gtk_css_filter_get_matrix (const GtkCssFilter *filter,
break; break;
case GTK_CSS_FILTER_INVERT: case GTK_CSS_FILTER_INVERT:
value = gtk_css_number_value_get (filter->invert.value, 1.0); value = _gtk_css_number_value_get (filter->invert.value, 1.0);
graphene_matrix_init_scale (matrix, 1.0 - 2 * value, 1.0 - 2 * value, 1.0 - 2 * value); graphene_matrix_init_scale (matrix, 1.0 - 2 * value, 1.0 - 2 * value, 1.0 - 2 * value);
graphene_vec4_init (offset, value, value, value, 0.0); graphene_vec4_init (offset, value, value, value, 0.0);
break; break;
case GTK_CSS_FILTER_OPACITY: case GTK_CSS_FILTER_OPACITY:
value = gtk_css_number_value_get (filter->opacity.value, 1.0); value = _gtk_css_number_value_get (filter->opacity.value, 1.0);
graphene_matrix_init_from_float (matrix, (float[16]) { graphene_matrix_init_from_float (matrix, (float[16]) {
1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0,
0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0,
@@ -225,7 +225,7 @@ gtk_css_filter_get_matrix (const GtkCssFilter *filter,
break; break;
case GTK_CSS_FILTER_SATURATE: case GTK_CSS_FILTER_SATURATE:
value = gtk_css_number_value_get (filter->saturate.value, 1.0); value = _gtk_css_number_value_get (filter->saturate.value, 1.0);
graphene_matrix_init_from_float (matrix, (float[16]) { graphene_matrix_init_from_float (matrix, (float[16]) {
R + (1.0 - R) * value, R - R * value, R - R * value, 0.0, R + (1.0 - R) * value, R - R * value, R - R * value, 0.0,
G - G * value, G + (1.0 - G) * value, G - G * value, 0.0, G - G * value, G + (1.0 - G) * value, G - G * value, 0.0,
@@ -236,7 +236,7 @@ gtk_css_filter_get_matrix (const GtkCssFilter *filter,
break; break;
case GTK_CSS_FILTER_SEPIA: case GTK_CSS_FILTER_SEPIA:
value = gtk_css_number_value_get (filter->sepia.value, 1.0); value = _gtk_css_number_value_get (filter->sepia.value, 1.0);
graphene_matrix_init_from_float (matrix, (float[16]) { graphene_matrix_init_from_float (matrix, (float[16]) {
1.0 - 0.607 * value, 0.349 * value, 0.272 * value, 0.0, 1.0 - 0.607 * value, 0.349 * value, 0.272 * value, 0.0,
0.769 * value, 1.0 - 0.314 * value, 0.534 * value, 0.0, 0.769 * value, 1.0 - 0.314 * value, 0.534 * value, 0.0,
@@ -307,53 +307,56 @@ gtk_css_value_filter_free (GtkCssValue *value)
/* returns TRUE if dest == src */ /* returns TRUE if dest == src */
static gboolean static gboolean
gtk_css_filter_compute (GtkCssFilter *dest, gtk_css_filter_compute (GtkCssFilter *dest,
GtkCssFilter *src, GtkCssFilter *src,
guint property_id, guint property_id,
GtkCssComputeContext *context) GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssVariableSet *variables)
{ {
dest->type = src->type; dest->type = src->type;
switch (src->type) switch (src->type)
{ {
case GTK_CSS_FILTER_BRIGHTNESS: case GTK_CSS_FILTER_BRIGHTNESS:
dest->brightness.value = gtk_css_value_compute (src->brightness.value, property_id, context); dest->brightness.value = _gtk_css_value_compute (src->brightness.value, property_id, provider, style, parent_style, variables);
return dest->brightness.value == src->brightness.value; return dest->brightness.value == src->brightness.value;
case GTK_CSS_FILTER_CONTRAST: case GTK_CSS_FILTER_CONTRAST:
dest->contrast.value = gtk_css_value_compute (src->contrast.value, property_id, context); dest->contrast.value = _gtk_css_value_compute (src->contrast.value, property_id, provider, style, parent_style, variables);
return dest->contrast.value == src->contrast.value; return dest->contrast.value == src->contrast.value;
case GTK_CSS_FILTER_GRAYSCALE: case GTK_CSS_FILTER_GRAYSCALE:
dest->grayscale.value = gtk_css_value_compute (src->grayscale.value, property_id, context); dest->grayscale.value = _gtk_css_value_compute (src->grayscale.value, property_id, provider, style, parent_style, variables);
return dest->grayscale.value == src->grayscale.value; return dest->grayscale.value == src->grayscale.value;
case GTK_CSS_FILTER_HUE_ROTATE: case GTK_CSS_FILTER_HUE_ROTATE:
dest->hue_rotate.value = gtk_css_value_compute (src->hue_rotate.value, property_id, context); dest->hue_rotate.value = _gtk_css_value_compute (src->hue_rotate.value, property_id, provider, style, parent_style, variables);
return dest->hue_rotate.value == src->hue_rotate.value; return dest->hue_rotate.value == src->hue_rotate.value;
case GTK_CSS_FILTER_INVERT: case GTK_CSS_FILTER_INVERT:
dest->invert.value = gtk_css_value_compute (src->invert.value, property_id, context); dest->invert.value = _gtk_css_value_compute (src->invert.value, property_id, provider, style, parent_style, variables);
return dest->invert.value == src->invert.value; return dest->invert.value == src->invert.value;
case GTK_CSS_FILTER_OPACITY: case GTK_CSS_FILTER_OPACITY:
dest->opacity.value = gtk_css_value_compute (src->opacity.value, property_id, context); dest->opacity.value = _gtk_css_value_compute (src->opacity.value, property_id, provider, style, parent_style, variables);
return dest->opacity.value == src->opacity.value; return dest->opacity.value == src->opacity.value;
case GTK_CSS_FILTER_SATURATE: case GTK_CSS_FILTER_SATURATE:
dest->saturate.value = gtk_css_value_compute (src->saturate.value, property_id, context); dest->saturate.value = _gtk_css_value_compute (src->saturate.value, property_id, provider, style, parent_style, variables);
return dest->saturate.value == src->saturate.value; return dest->saturate.value == src->saturate.value;
case GTK_CSS_FILTER_SEPIA: case GTK_CSS_FILTER_SEPIA:
dest->sepia.value = gtk_css_value_compute (src->sepia.value, property_id, context); dest->sepia.value = _gtk_css_value_compute (src->sepia.value, property_id, provider, style, parent_style, variables);
return dest->sepia.value == src->sepia.value; return dest->sepia.value == src->sepia.value;
case GTK_CSS_FILTER_BLUR: case GTK_CSS_FILTER_BLUR:
dest->blur.value = gtk_css_value_compute (src->blur.value, property_id, context); dest->blur.value = _gtk_css_value_compute (src->blur.value, property_id, provider, style, parent_style, variables);
return dest->blur.value == src->blur.value; return dest->blur.value == src->blur.value;
case GTK_CSS_FILTER_DROP_SHADOW: case GTK_CSS_FILTER_DROP_SHADOW:
dest->drop_shadow.value = gtk_css_value_compute (src->drop_shadow.value, property_id, context); dest->drop_shadow.value = _gtk_css_value_compute (src->drop_shadow.value, property_id, provider, style, parent_style, variables);
return dest->drop_shadow.value == src->drop_shadow.value; return dest->drop_shadow.value == src->drop_shadow.value;
case GTK_CSS_FILTER_NONE: case GTK_CSS_FILTER_NONE:
@@ -364,9 +367,12 @@ gtk_css_filter_compute (GtkCssFilter *dest,
} }
static GtkCssValue * static GtkCssValue *
gtk_css_value_filter_compute (GtkCssValue *value, gtk_css_value_filter_compute (GtkCssValue *value,
guint property_id, guint property_id,
GtkCssComputeContext *context) GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssVariableSet *variables)
{ {
GtkCssValue *result; GtkCssValue *result;
gboolean changes; gboolean changes;
@@ -374,7 +380,7 @@ gtk_css_value_filter_compute (GtkCssValue *value,
/* Special case the 99% case of "none" */ /* Special case the 99% case of "none" */
if (gtk_css_filter_value_is_none (value)) if (gtk_css_filter_value_is_none (value))
return gtk_css_value_ref (value); return _gtk_css_value_ref (value);
changes = FALSE; changes = FALSE;
result = gtk_css_filter_value_alloc (value->n_filters); result = gtk_css_filter_value_alloc (value->n_filters);
@@ -384,13 +390,16 @@ gtk_css_value_filter_compute (GtkCssValue *value,
changes |= !gtk_css_filter_compute (&result->filters[i], changes |= !gtk_css_filter_compute (&result->filters[i],
&value->filters[i], &value->filters[i],
property_id, property_id,
context); provider,
style,
parent_style,
variables);
} }
if (!changes) if (!changes)
{ {
gtk_css_value_unref (result); _gtk_css_value_unref (result);
result = gtk_css_value_ref (value); result = _gtk_css_value_ref (value);
} }
return result; return result;
@@ -406,34 +415,34 @@ gtk_css_filter_equal (const GtkCssFilter *filter1,
switch (filter1->type) switch (filter1->type)
{ {
case GTK_CSS_FILTER_BRIGHTNESS: case GTK_CSS_FILTER_BRIGHTNESS:
return gtk_css_value_equal (filter1->brightness.value, filter2->brightness.value); return _gtk_css_value_equal (filter1->brightness.value, filter2->brightness.value);
case GTK_CSS_FILTER_CONTRAST: case GTK_CSS_FILTER_CONTRAST:
return gtk_css_value_equal (filter1->contrast.value, filter2->contrast.value); return _gtk_css_value_equal (filter1->contrast.value, filter2->contrast.value);
case GTK_CSS_FILTER_GRAYSCALE: case GTK_CSS_FILTER_GRAYSCALE:
return gtk_css_value_equal (filter1->grayscale.value, filter2->grayscale.value); return _gtk_css_value_equal (filter1->grayscale.value, filter2->grayscale.value);
case GTK_CSS_FILTER_HUE_ROTATE: case GTK_CSS_FILTER_HUE_ROTATE:
return gtk_css_value_equal (filter1->hue_rotate.value, filter2->hue_rotate.value); return _gtk_css_value_equal (filter1->hue_rotate.value, filter2->hue_rotate.value);
case GTK_CSS_FILTER_INVERT: case GTK_CSS_FILTER_INVERT:
return gtk_css_value_equal (filter1->invert.value, filter2->invert.value); return _gtk_css_value_equal (filter1->invert.value, filter2->invert.value);
case GTK_CSS_FILTER_OPACITY: case GTK_CSS_FILTER_OPACITY:
return gtk_css_value_equal (filter1->opacity.value, filter2->opacity.value); return _gtk_css_value_equal (filter1->opacity.value, filter2->opacity.value);
case GTK_CSS_FILTER_SATURATE: case GTK_CSS_FILTER_SATURATE:
return gtk_css_value_equal (filter1->saturate.value, filter2->saturate.value); return _gtk_css_value_equal (filter1->saturate.value, filter2->saturate.value);
case GTK_CSS_FILTER_SEPIA: case GTK_CSS_FILTER_SEPIA:
return gtk_css_value_equal (filter1->sepia.value, filter2->sepia.value); return _gtk_css_value_equal (filter1->sepia.value, filter2->sepia.value);
case GTK_CSS_FILTER_BLUR: case GTK_CSS_FILTER_BLUR:
return gtk_css_value_equal (filter1->blur.value, filter2->blur.value); return _gtk_css_value_equal (filter1->blur.value, filter2->blur.value);
case GTK_CSS_FILTER_DROP_SHADOW: case GTK_CSS_FILTER_DROP_SHADOW:
return gtk_css_value_equal (filter1->drop_shadow.value, filter2->drop_shadow.value); return _gtk_css_value_equal (filter1->drop_shadow.value, filter2->drop_shadow.value);
case GTK_CSS_FILTER_NONE: case GTK_CSS_FILTER_NONE:
default: default:
@@ -488,43 +497,43 @@ gtk_css_filter_transition (GtkCssFilter *result,
switch (start->type) switch (start->type)
{ {
case GTK_CSS_FILTER_BRIGHTNESS: case GTK_CSS_FILTER_BRIGHTNESS:
result->brightness.value = gtk_css_value_transition (start->brightness.value, end->brightness.value, property_id, progress); result->brightness.value = _gtk_css_value_transition (start->brightness.value, end->brightness.value, property_id, progress);
break; break;
case GTK_CSS_FILTER_CONTRAST: case GTK_CSS_FILTER_CONTRAST:
result->contrast.value = gtk_css_value_transition (start->contrast.value, end->contrast.value, property_id, progress); result->contrast.value = _gtk_css_value_transition (start->contrast.value, end->contrast.value, property_id, progress);
break; break;
case GTK_CSS_FILTER_GRAYSCALE: case GTK_CSS_FILTER_GRAYSCALE:
result->grayscale.value = gtk_css_value_transition (start->grayscale.value, end->grayscale.value, property_id, progress); result->grayscale.value = _gtk_css_value_transition (start->grayscale.value, end->grayscale.value, property_id, progress);
break; break;
case GTK_CSS_FILTER_HUE_ROTATE: case GTK_CSS_FILTER_HUE_ROTATE:
result->hue_rotate.value = gtk_css_value_transition (start->hue_rotate.value, end->hue_rotate.value, property_id, progress); result->hue_rotate.value = _gtk_css_value_transition (start->hue_rotate.value, end->hue_rotate.value, property_id, progress);
break; break;
case GTK_CSS_FILTER_INVERT: case GTK_CSS_FILTER_INVERT:
result->invert.value = gtk_css_value_transition (start->invert.value, end->invert.value, property_id, progress); result->invert.value = _gtk_css_value_transition (start->invert.value, end->invert.value, property_id, progress);
break; break;
case GTK_CSS_FILTER_OPACITY: case GTK_CSS_FILTER_OPACITY:
result->opacity.value = gtk_css_value_transition (start->opacity.value, end->opacity.value, property_id, progress); result->opacity.value = _gtk_css_value_transition (start->opacity.value, end->opacity.value, property_id, progress);
break; break;
case GTK_CSS_FILTER_SATURATE: case GTK_CSS_FILTER_SATURATE:
result->saturate.value = gtk_css_value_transition (start->saturate.value, end->saturate.value, property_id, progress); result->saturate.value = _gtk_css_value_transition (start->saturate.value, end->saturate.value, property_id, progress);
break; break;
case GTK_CSS_FILTER_SEPIA: case GTK_CSS_FILTER_SEPIA:
result->sepia.value = gtk_css_value_transition (start->sepia.value, end->sepia.value, property_id, progress); result->sepia.value = _gtk_css_value_transition (start->sepia.value, end->sepia.value, property_id, progress);
break; break;
case GTK_CSS_FILTER_BLUR: case GTK_CSS_FILTER_BLUR:
result->blur.value = gtk_css_value_transition (start->blur.value, end->blur.value, property_id, progress); result->blur.value = _gtk_css_value_transition (start->blur.value, end->blur.value, property_id, progress);
break; break;
case GTK_CSS_FILTER_DROP_SHADOW: case GTK_CSS_FILTER_DROP_SHADOW:
result->drop_shadow.value = gtk_css_value_transition (start->drop_shadow.value, end->drop_shadow.value, property_id, progress); result->drop_shadow.value = _gtk_css_value_transition (start->drop_shadow.value, end->drop_shadow.value, property_id, progress);
break; break;
case GTK_CSS_FILTER_NONE: case GTK_CSS_FILTER_NONE:
@@ -546,7 +555,7 @@ gtk_css_value_filter_transition (GtkCssValue *start,
if (gtk_css_filter_value_is_none (start)) if (gtk_css_filter_value_is_none (start))
{ {
if (gtk_css_filter_value_is_none (end)) if (gtk_css_filter_value_is_none (end))
return gtk_css_value_ref (start); return _gtk_css_value_ref (start);
n = 0; n = 0;
} }
@@ -620,61 +629,61 @@ gtk_css_filter_print (const GtkCssFilter *filter,
{ {
case GTK_CSS_FILTER_BRIGHTNESS: case GTK_CSS_FILTER_BRIGHTNESS:
g_string_append (string, "brightness("); g_string_append (string, "brightness(");
gtk_css_value_print (filter->brightness.value, string); _gtk_css_value_print (filter->brightness.value, string);
g_string_append (string, ")"); g_string_append (string, ")");
break; break;
case GTK_CSS_FILTER_CONTRAST: case GTK_CSS_FILTER_CONTRAST:
g_string_append (string, "contrast("); g_string_append (string, "contrast(");
gtk_css_value_print (filter->contrast.value, string); _gtk_css_value_print (filter->contrast.value, string);
g_string_append (string, ")"); g_string_append (string, ")");
break; break;
case GTK_CSS_FILTER_GRAYSCALE: case GTK_CSS_FILTER_GRAYSCALE:
g_string_append (string, "grayscale("); g_string_append (string, "grayscale(");
gtk_css_value_print (filter->grayscale.value, string); _gtk_css_value_print (filter->grayscale.value, string);
g_string_append (string, ")"); g_string_append (string, ")");
break; break;
case GTK_CSS_FILTER_HUE_ROTATE: case GTK_CSS_FILTER_HUE_ROTATE:
g_string_append (string, "hue-rotate("); g_string_append (string, "hue-rotate(");
gtk_css_value_print (filter->hue_rotate.value, string); _gtk_css_value_print (filter->hue_rotate.value, string);
g_string_append (string, ")"); g_string_append (string, ")");
break; break;
case GTK_CSS_FILTER_INVERT: case GTK_CSS_FILTER_INVERT:
g_string_append (string, "invert("); g_string_append (string, "invert(");
gtk_css_value_print (filter->invert.value, string); _gtk_css_value_print (filter->invert.value, string);
g_string_append (string, ")"); g_string_append (string, ")");
break; break;
case GTK_CSS_FILTER_OPACITY: case GTK_CSS_FILTER_OPACITY:
g_string_append (string, "opacity("); g_string_append (string, "opacity(");
gtk_css_value_print (filter->opacity.value, string); _gtk_css_value_print (filter->opacity.value, string);
g_string_append (string, ")"); g_string_append (string, ")");
break; break;
case GTK_CSS_FILTER_SATURATE: case GTK_CSS_FILTER_SATURATE:
g_string_append (string, "saturate("); g_string_append (string, "saturate(");
gtk_css_value_print (filter->saturate.value, string); _gtk_css_value_print (filter->saturate.value, string);
g_string_append (string, ")"); g_string_append (string, ")");
break; break;
case GTK_CSS_FILTER_SEPIA: case GTK_CSS_FILTER_SEPIA:
g_string_append (string, "sepia("); g_string_append (string, "sepia(");
gtk_css_value_print (filter->sepia.value, string); _gtk_css_value_print (filter->sepia.value, string);
g_string_append (string, ")"); g_string_append (string, ")");
break; break;
case GTK_CSS_FILTER_BLUR: case GTK_CSS_FILTER_BLUR:
g_string_append (string, "blur("); g_string_append (string, "blur(");
gtk_css_value_print (filter->blur.value, string); _gtk_css_value_print (filter->blur.value, string);
g_string_append (string, ")"); g_string_append (string, ")");
break; break;
case GTK_CSS_FILTER_DROP_SHADOW: case GTK_CSS_FILTER_DROP_SHADOW:
g_string_append (string, "drop-shadow("); g_string_append (string, "drop-shadow(");
gtk_css_value_print (filter->drop_shadow.value, string); _gtk_css_value_print (filter->drop_shadow.value, string);
g_string_append (string, ")"); g_string_append (string, ")");
break; break;
@@ -726,7 +735,7 @@ gtk_css_filter_value_alloc (guint n_filters)
g_return_val_if_fail (n_filters > 0, NULL); g_return_val_if_fail (n_filters > 0, NULL);
result = gtk_css_value_alloc (&GTK_CSS_VALUE_FILTER, sizeof (GtkCssValue) + sizeof (GtkCssFilter) * (n_filters - 1)); result = _gtk_css_value_alloc (&GTK_CSS_VALUE_FILTER, sizeof (GtkCssValue) + sizeof (GtkCssFilter) * (n_filters - 1));
result->n_filters = n_filters; result->n_filters = n_filters;
return result; return result;
@@ -735,7 +744,7 @@ gtk_css_filter_value_alloc (guint n_filters)
GtkCssValue * GtkCssValue *
gtk_css_filter_value_new_none (void) gtk_css_filter_value_new_none (void)
{ {
return gtk_css_value_ref (&filter_none_singleton); return _gtk_css_value_ref (&filter_none_singleton);
} }
static gboolean static gboolean
@@ -751,7 +760,7 @@ gtk_css_filter_parse_number (GtkCssParser *parser,
{ {
GtkCssValue **values = data; GtkCssValue **values = data;
values[n] = gtk_css_number_value_parse (parser, GTK_CSS_PARSE_NUMBER | GTK_CSS_PARSE_PERCENT | GTK_CSS_POSITIVE_ONLY); values[n] = _gtk_css_number_value_parse (parser, GTK_CSS_PARSE_NUMBER | GTK_CSS_PARSE_PERCENT | GTK_CSS_POSITIVE_ONLY);
if (values[n] == NULL) if (values[n] == NULL)
return 0; return 0;
@@ -765,7 +774,7 @@ gtk_css_filter_parse_length (GtkCssParser *parser,
{ {
GtkCssValue **values = data; GtkCssValue **values = data;
values[n] = gtk_css_number_value_parse (parser, GTK_CSS_PARSE_LENGTH | GTK_CSS_POSITIVE_ONLY); values[n] = _gtk_css_number_value_parse (parser, GTK_CSS_PARSE_LENGTH | GTK_CSS_POSITIVE_ONLY);
if (values[n] == NULL) if (values[n] == NULL)
return 0; return 0;
@@ -779,7 +788,7 @@ gtk_css_filter_parse_angle (GtkCssParser *parser,
{ {
GtkCssValue **values = data; GtkCssValue **values = data;
values[n] = gtk_css_number_value_parse (parser, GTK_CSS_PARSE_ANGLE); values[n] = _gtk_css_number_value_parse (parser, GTK_CSS_PARSE_ANGLE);
if (values[n] == NULL) if (values[n] == NULL)
return 0; return 0;
@@ -957,7 +966,7 @@ gtk_css_filter_value_push_snapshot (const GtkCssValue *filter,
{ {
if (filter->filters[j].type == GTK_CSS_FILTER_BLUR) if (filter->filters[j].type == GTK_CSS_FILTER_BLUR)
{ {
double std_dev = gtk_css_number_value_get (filter->filters[j].blur.value, 100.0); double std_dev = _gtk_css_number_value_get (filter->filters[j].blur.value, 100.0);
gtk_snapshot_push_blur (snapshot, 2 * std_dev); gtk_snapshot_push_blur (snapshot, 2 * std_dev);
} }
else if (filter->filters[j].type == GTK_CSS_FILTER_DROP_SHADOW) else if (filter->filters[j].type == GTK_CSS_FILTER_DROP_SHADOW)
+12 -9
View File
@@ -53,11 +53,14 @@ gtk_css_value_font_features_free (GtkCssValue *value)
} }
static GtkCssValue * static GtkCssValue *
gtk_css_value_font_features_compute (GtkCssValue *specified, gtk_css_value_font_features_compute (GtkCssValue *specified,
guint property_id, guint property_id,
GtkCssComputeContext *context) GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssVariableSet *variables)
{ {
return gtk_css_value_ref (specified); return _gtk_css_value_ref (specified);
} }
static gboolean static gboolean
@@ -168,7 +171,7 @@ gtk_css_font_features_value_new_empty (void)
{ {
GtkCssValue *result; GtkCssValue *result;
result = gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_FONT_FEATURES); result = _gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_FONT_FEATURES);
result->features = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); result->features = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
result->is_computed = TRUE; result->is_computed = TRUE;
@@ -181,7 +184,7 @@ gtk_css_font_features_value_new_default (void)
if (default_font_features == NULL) if (default_font_features == NULL)
default_font_features = gtk_css_font_features_value_new_empty (); default_font_features = gtk_css_font_features_value_new_empty ();
return gtk_css_value_ref (default_font_features); return _gtk_css_value_ref (default_font_features);
} }
static gboolean static gboolean
@@ -215,7 +218,7 @@ gtk_css_font_features_value_parse (GtkCssParser *parser)
name = gtk_css_parser_consume_string (parser); name = gtk_css_parser_consume_string (parser);
if (name == NULL) if (name == NULL)
{ {
gtk_css_value_unref (result); _gtk_css_value_unref (result);
return NULL; return NULL;
} }
@@ -223,7 +226,7 @@ gtk_css_font_features_value_parse (GtkCssParser *parser)
{ {
gtk_css_parser_error_value (parser, "Not a valid OpenType tag."); gtk_css_parser_error_value (parser, "Not a valid OpenType tag.");
g_free (name); g_free (name);
gtk_css_value_unref (result); _gtk_css_value_unref (result);
return NULL; return NULL;
} }
@@ -236,7 +239,7 @@ gtk_css_font_features_value_parse (GtkCssParser *parser)
if (!gtk_css_parser_consume_integer (parser, &num)) if (!gtk_css_parser_consume_integer (parser, &num))
{ {
g_free (name); g_free (name);
gtk_css_value_unref (result); _gtk_css_value_unref (result);
return NULL; return NULL;
} }
} }
+20 -17
View File
@@ -52,11 +52,14 @@ gtk_css_value_font_variations_free (GtkCssValue *value)
} }
static GtkCssValue * static GtkCssValue *
gtk_css_value_font_variations_compute (GtkCssValue *specified, gtk_css_value_font_variations_compute (GtkCssValue *specified,
guint property_id, guint property_id,
GtkCssComputeContext *context) GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssVariableSet *variables)
{ {
return gtk_css_value_ref (specified); return _gtk_css_value_ref (specified);
} }
static gboolean static gboolean
@@ -76,7 +79,7 @@ gtk_css_value_font_variations_equal (const GtkCssValue *value1,
if (coord2 == NULL) if (coord2 == NULL)
return FALSE; return FALSE;
if (!gtk_css_value_equal (coord1, coord2)) if (!_gtk_css_value_equal (coord1, coord2))
return FALSE; return FALSE;
} }
@@ -106,9 +109,9 @@ gtk_css_value_font_variations_transition (GtkCssValue *start,
{ {
end_coord = g_hash_table_lookup (end->axes, name); end_coord = g_hash_table_lookup (end->axes, name);
if (end_coord == NULL) if (end_coord == NULL)
transition = gtk_css_value_ref (start_coord); transition = _gtk_css_value_ref (start_coord);
else else
transition = gtk_css_value_transition (start_coord, end_coord, property_id, progress); transition = _gtk_css_value_transition (start_coord, end_coord, property_id, progress);
gtk_css_font_variations_value_add_axis (result, name, transition); gtk_css_font_variations_value_add_axis (result, name, transition);
} }
@@ -120,7 +123,7 @@ gtk_css_value_font_variations_transition (GtkCssValue *start,
if (start_coord != NULL) if (start_coord != NULL)
continue; continue;
gtk_css_font_variations_value_add_axis (result, name, gtk_css_value_ref (end_coord)); gtk_css_font_variations_value_add_axis (result, name, _gtk_css_value_ref (end_coord));
} }
return result; return result;
@@ -149,7 +152,7 @@ gtk_css_value_font_variations_print (const GtkCssValue *value,
else else
g_string_append (string, ", "); g_string_append (string, ", ");
g_string_append_printf (string, "\"%s\" ", name); g_string_append_printf (string, "\"%s\" ", name);
gtk_css_value_print (coord, string); _gtk_css_value_print (coord, string);
} }
} }
@@ -169,10 +172,10 @@ gtk_css_font_variations_value_new_empty (void)
{ {
GtkCssValue *result; GtkCssValue *result;
result = gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_FONT_VARIATIONS); result = _gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_FONT_VARIATIONS);
result->axes = g_hash_table_new_full (g_str_hash, g_str_equal, result->axes = g_hash_table_new_full (g_str_hash, g_str_equal,
g_free, g_free,
(GDestroyNotify) gtk_css_value_unref); (GDestroyNotify) _gtk_css_value_unref);
result->is_computed = TRUE; result->is_computed = TRUE;
return result; return result;
@@ -184,7 +187,7 @@ gtk_css_font_variations_value_new_default (void)
if (default_font_variations == NULL) if (default_font_variations == NULL)
default_font_variations = gtk_css_font_variations_value_new_empty (); default_font_variations = gtk_css_font_variations_value_new_empty ();
return gtk_css_value_ref (default_font_variations); return _gtk_css_value_ref (default_font_variations);
} }
static gboolean static gboolean
@@ -217,7 +220,7 @@ gtk_css_font_variations_value_parse (GtkCssParser *parser)
name = gtk_css_parser_consume_string (parser); name = gtk_css_parser_consume_string (parser);
if (name == NULL) if (name == NULL)
{ {
gtk_css_value_unref (result); _gtk_css_value_unref (result);
return NULL; return NULL;
} }
@@ -225,15 +228,15 @@ gtk_css_font_variations_value_parse (GtkCssParser *parser)
{ {
gtk_css_parser_error_value (parser, "Not a valid OpenType tag."); gtk_css_parser_error_value (parser, "Not a valid OpenType tag.");
g_free (name); g_free (name);
gtk_css_value_unref (result); _gtk_css_value_unref (result);
return NULL; return NULL;
} }
coord = gtk_css_number_value_parse (parser, GTK_CSS_PARSE_NUMBER); coord = _gtk_css_number_value_parse (parser, GTK_CSS_PARSE_NUMBER);
if (coord == NULL) if (coord == NULL)
{ {
g_free (name); g_free (name);
gtk_css_value_unref (result); _gtk_css_value_unref (result);
return NULL; return NULL;
} }
@@ -268,7 +271,7 @@ gtk_css_font_variations_value_get_variations (GtkCssValue *value)
else else
g_string_append (string, ","); g_string_append (string, ",");
g_string_append_printf (string, "%s=%g", name, g_string_append_printf (string, "%s=%g", name,
gtk_css_number_value_get (coord, 100)); _gtk_css_number_value_get (coord, 100));
} }
return g_string_free (string, FALSE); return g_string_free (string, FALSE);
+15 -9
View File
@@ -65,9 +65,12 @@ gtk_css_image_real_get_aspect_ratio (GtkCssImage *image)
} }
static GtkCssImage * static GtkCssImage *
gtk_css_image_real_compute (GtkCssImage *image, gtk_css_image_real_compute (GtkCssImage *image,
guint property_id, guint property_id,
GtkCssComputeContext *context) GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssVariableSet *variables)
{ {
return g_object_ref (image); return g_object_ref (image);
} }
@@ -171,19 +174,22 @@ _gtk_css_image_get_aspect_ratio (GtkCssImage *image)
} }
GtkCssImage * GtkCssImage *
_gtk_css_image_compute (GtkCssImage *image, _gtk_css_image_compute (GtkCssImage *image,
guint property_id, guint property_id,
GtkCssComputeContext *context) GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssVariableSet *variables)
{ {
GtkCssImageClass *klass; GtkCssImageClass *klass;
gtk_internal_return_val_if_fail (GTK_IS_CSS_IMAGE (image), NULL); gtk_internal_return_val_if_fail (GTK_IS_CSS_IMAGE (image), NULL);
gtk_internal_return_val_if_fail (GTK_IS_CSS_STYLE (context->style), NULL); gtk_internal_return_val_if_fail (GTK_IS_CSS_STYLE (style), NULL);
gtk_internal_return_val_if_fail (context->parent_style == NULL || GTK_IS_CSS_STYLE (context->parent_style), NULL); gtk_internal_return_val_if_fail (parent_style == NULL || GTK_IS_CSS_STYLE (parent_style), NULL);
klass = GTK_CSS_IMAGE_GET_CLASS (image); klass = GTK_CSS_IMAGE_GET_CLASS (image);
return klass->compute (image, property_id, context); return klass->compute (image, property_id, provider, style, parent_style, variables);
} }
GtkCssImage * GtkCssImage *
+44 -41
View File
@@ -61,7 +61,7 @@ gtk_css_image_conic_snapshot (GtkCssImage *image,
} }
else else
{ {
pos = gtk_css_number_value_get (stop->offset, 360) / 360; pos = _gtk_css_number_value_get (stop->offset, 360) / 360;
pos = CLAMP (pos, 0.0, 1.0); pos = CLAMP (pos, 0.0, 1.0);
} }
@@ -86,7 +86,7 @@ gtk_css_image_conic_snapshot (GtkCssImage *image,
&GRAPHENE_RECT_INIT (0, 0, width, height), &GRAPHENE_RECT_INIT (0, 0, width, height),
&GRAPHENE_POINT_INIT (_gtk_css_position_value_get_x (self->center, width), &GRAPHENE_POINT_INIT (_gtk_css_position_value_get_x (self->center, width),
_gtk_css_position_value_get_y (self->center, height)), _gtk_css_position_value_get_y (self->center, height)),
gtk_css_number_value_get (self->rotation, 360), _gtk_css_number_value_get (self->rotation, 360),
stops, stops,
self->n_stops); self->n_stops);
} }
@@ -98,13 +98,13 @@ parse_angles (GtkCssParser *parser,
{ {
GtkCssValue **angles = option_data; GtkCssValue **angles = option_data;
angles[0] = gtk_css_number_value_parse (parser, GTK_CSS_PARSE_ANGLE | GTK_CSS_PARSE_PERCENT); angles[0] = _gtk_css_number_value_parse (parser, GTK_CSS_PARSE_ANGLE | GTK_CSS_PARSE_PERCENT);
if (angles[0] == NULL) if (angles[0] == NULL)
return FALSE; return FALSE;
if (gtk_css_number_value_can_parse (parser)) if (gtk_css_number_value_can_parse (parser))
{ {
angles[1] = gtk_css_number_value_parse (parser, GTK_CSS_PARSE_ANGLE | GTK_CSS_PARSE_PERCENT); angles[1] = _gtk_css_number_value_parse (parser, GTK_CSS_PARSE_ANGLE | GTK_CSS_PARSE_PERCENT);
if (angles[1] == NULL) if (angles[1] == NULL)
return FALSE; return FALSE;
} }
@@ -119,7 +119,7 @@ parse_color (GtkCssParser *parser,
{ {
GtkCssValue **color = option_data; GtkCssValue **color = option_data;
*color = gtk_css_color_value_parse (parser); *color = _gtk_css_color_value_parse (parser);
if (*color == NULL) if (*color == NULL)
return FALSE; return FALSE;
@@ -176,14 +176,14 @@ gtk_css_image_conic_parse_first_arg (GtkCssImageConic *self,
if (gtk_css_parser_try_ident (parser, "from")) if (gtk_css_parser_try_ident (parser, "from"))
{ {
self->rotation = gtk_css_number_value_parse (parser, GTK_CSS_PARSE_ANGLE); self->rotation = _gtk_css_number_value_parse (parser, GTK_CSS_PARSE_ANGLE);
if (self->rotation == NULL) if (self->rotation == NULL)
return 0; return 0;
nothing_parsed = FALSE; nothing_parsed = FALSE;
} }
else else
{ {
self->rotation = gtk_css_number_value_new (0, GTK_CSS_DEG); self->rotation = _gtk_css_number_value_new (0, GTK_CSS_DEG);
} }
if (gtk_css_parser_try_ident (parser, "at")) if (gtk_css_parser_try_ident (parser, "at"))
@@ -195,8 +195,8 @@ gtk_css_image_conic_parse_first_arg (GtkCssImageConic *self,
} }
else else
{ {
self->center = _gtk_css_position_value_new (gtk_css_number_value_new (50, GTK_CSS_PERCENT), self->center = _gtk_css_position_value_new (_gtk_css_number_value_new (50, GTK_CSS_PERCENT),
gtk_css_number_value_new (50, GTK_CSS_PERCENT)); _gtk_css_number_value_new (50, GTK_CSS_PERCENT));
} }
if (!nothing_parsed) if (!nothing_parsed)
@@ -269,25 +269,25 @@ gtk_css_image_conic_print (GtkCssImage *image,
if (self->center) if (self->center)
{ {
GtkCssValue *compare = _gtk_css_position_value_new (gtk_css_number_value_new (50, GTK_CSS_PERCENT), GtkCssValue *compare = _gtk_css_position_value_new (_gtk_css_number_value_new (50, GTK_CSS_PERCENT),
gtk_css_number_value_new (50, GTK_CSS_PERCENT)); _gtk_css_number_value_new (50, GTK_CSS_PERCENT));
if (!gtk_css_value_equal (self->center, compare)) if (!_gtk_css_value_equal (self->center, compare))
{ {
g_string_append (string, "from "); g_string_append (string, "from ");
gtk_css_value_print (self->center, string); _gtk_css_value_print (self->center, string);
written = TRUE; written = TRUE;
} }
gtk_css_value_unref (compare); gtk_css_value_unref (compare);
} }
if (self->rotation && gtk_css_number_value_get (self->rotation, 360) != 0) if (self->rotation && _gtk_css_number_value_get (self->rotation, 360) != 0)
{ {
if (written) if (written)
g_string_append_c (string, ' '); g_string_append_c (string, ' ');
g_string_append (string, "at "); g_string_append (string, "at ");
gtk_css_value_print (self->rotation, string); _gtk_css_value_print (self->rotation, string);
} }
if (written) if (written)
@@ -300,12 +300,12 @@ gtk_css_image_conic_print (GtkCssImage *image,
if (i > 0) if (i > 0)
g_string_append (string, ", "); g_string_append (string, ", ");
gtk_css_value_print (stop->color, string); _gtk_css_value_print (stop->color, string);
if (stop->offset) if (stop->offset)
{ {
g_string_append (string, " "); g_string_append (string, " ");
gtk_css_value_print (stop->offset, string); _gtk_css_value_print (stop->offset, string);
} }
} }
@@ -313,9 +313,12 @@ gtk_css_image_conic_print (GtkCssImage *image,
} }
static GtkCssImage * static GtkCssImage *
gtk_css_image_conic_compute (GtkCssImage *image, gtk_css_image_conic_compute (GtkCssImage *image,
guint property_id, guint property_id,
GtkCssComputeContext *context) GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssVariableSet *variables)
{ {
GtkCssImageConic *self = GTK_CSS_IMAGE_CONIC (image); GtkCssImageConic *self = GTK_CSS_IMAGE_CONIC (image);
GtkCssImageConic *copy; GtkCssImageConic *copy;
@@ -323,8 +326,8 @@ gtk_css_image_conic_compute (GtkCssImage *image,
copy = g_object_new (GTK_TYPE_CSS_IMAGE_CONIC, NULL); copy = g_object_new (GTK_TYPE_CSS_IMAGE_CONIC, NULL);
copy->center = gtk_css_value_compute (self->center, property_id, context); copy->center = _gtk_css_value_compute (self->center, property_id, provider, style, parent_style, variables);
copy->rotation = gtk_css_value_compute (self->rotation, property_id, context); copy->rotation = _gtk_css_value_compute (self->rotation, property_id, provider, style, parent_style, variables);
copy->n_stops = self->n_stops; copy->n_stops = self->n_stops;
copy->color_stops = g_malloc (sizeof (GtkCssImageConicColorStop) * copy->n_stops); copy->color_stops = g_malloc (sizeof (GtkCssImageConicColorStop) * copy->n_stops);
@@ -333,11 +336,11 @@ gtk_css_image_conic_compute (GtkCssImage *image,
const GtkCssImageConicColorStop *stop = &self->color_stops[i]; const GtkCssImageConicColorStop *stop = &self->color_stops[i];
GtkCssImageConicColorStop *scopy = &copy->color_stops[i]; GtkCssImageConicColorStop *scopy = &copy->color_stops[i];
scopy->color = gtk_css_value_compute (stop->color, property_id, context); scopy->color = _gtk_css_value_compute (stop->color, property_id, provider, style, parent_style, variables);
if (stop->offset) if (stop->offset)
{ {
scopy->offset = gtk_css_value_compute (stop->offset, property_id, context); scopy->offset = _gtk_css_value_compute (stop->offset, property_id, provider, style, parent_style, variables);
} }
else else
{ {
@@ -372,11 +375,11 @@ gtk_css_image_conic_transition (GtkCssImage *start_image,
result = g_object_new (GTK_TYPE_CSS_IMAGE_CONIC, NULL); result = g_object_new (GTK_TYPE_CSS_IMAGE_CONIC, NULL);
result->center = gtk_css_value_transition (start->center, end->center, property_id, progress); result->center = _gtk_css_value_transition (start->center, end->center, property_id, progress);
if (result->center == NULL) if (result->center == NULL)
goto fail; goto fail;
result->rotation = gtk_css_value_transition (start->rotation, end->rotation, property_id, progress); result->rotation = _gtk_css_value_transition (start->rotation, end->rotation, property_id, progress);
if (result->rotation == NULL) if (result->rotation == NULL)
goto fail; goto fail;
@@ -397,22 +400,22 @@ gtk_css_image_conic_transition (GtkCssImage *start_image,
} }
else else
{ {
stop->offset = gtk_css_value_transition (start_stop->offset, stop->offset = _gtk_css_value_transition (start_stop->offset,
end_stop->offset, end_stop->offset,
property_id, property_id,
progress); progress);
if (stop->offset == NULL) if (stop->offset == NULL)
goto fail; goto fail;
} }
stop->color = gtk_css_value_transition (start_stop->color, stop->color = _gtk_css_value_transition (start_stop->color,
end_stop->color, end_stop->color,
property_id, property_id,
progress); progress);
if (stop->color == NULL) if (stop->color == NULL)
{ {
if (stop->offset) if (stop->offset)
gtk_css_value_unref (stop->offset); _gtk_css_value_unref (stop->offset);
goto fail; goto fail;
} }
@@ -434,8 +437,8 @@ gtk_css_image_conic_equal (GtkCssImage *image1,
GtkCssImageConic *conic2 = (GtkCssImageConic *) image2; GtkCssImageConic *conic2 = (GtkCssImageConic *) image2;
guint i; guint i;
if (!gtk_css_value_equal (conic1->center, conic2->center) || if (!_gtk_css_value_equal (conic1->center, conic2->center) ||
!gtk_css_value_equal (conic1->rotation, conic2->rotation)) !_gtk_css_value_equal (conic1->rotation, conic2->rotation))
return FALSE; return FALSE;
for (i = 0; i < conic1->n_stops; i++) for (i = 0; i < conic1->n_stops; i++)
@@ -443,8 +446,8 @@ gtk_css_image_conic_equal (GtkCssImage *image1,
const GtkCssImageConicColorStop *stop1 = &conic1->color_stops[i]; const GtkCssImageConicColorStop *stop1 = &conic1->color_stops[i];
const GtkCssImageConicColorStop *stop2 = &conic2->color_stops[i]; const GtkCssImageConicColorStop *stop2 = &conic2->color_stops[i];
if (!gtk_css_value_equal0 (stop1->offset, stop2->offset) || if (!_gtk_css_value_equal0 (stop1->offset, stop2->offset) ||
!gtk_css_value_equal (stop1->color, stop2->color)) !_gtk_css_value_equal (stop1->color, stop2->color))
return FALSE; return FALSE;
} }
@@ -461,9 +464,9 @@ gtk_css_image_conic_dispose (GObject *object)
{ {
GtkCssImageConicColorStop *stop = &self->color_stops[i]; GtkCssImageConicColorStop *stop = &self->color_stops[i];
gtk_css_value_unref (stop->color); _gtk_css_value_unref (stop->color);
if (stop->offset) if (stop->offset)
gtk_css_value_unref (stop->offset); _gtk_css_value_unref (stop->offset);
} }
g_free (self->color_stops); g_free (self->color_stops);
+11 -8
View File
@@ -289,11 +289,11 @@ parse_progress (GtkCssParser *parser,
double *progress = option_data; double *progress = option_data;
GtkCssValue *number; GtkCssValue *number;
number = gtk_css_number_value_parse (parser, GTK_CSS_PARSE_PERCENT | GTK_CSS_POSITIVE_ONLY); number = _gtk_css_number_value_parse (parser, GTK_CSS_PARSE_PERCENT | GTK_CSS_POSITIVE_ONLY);
if (number == NULL) if (number == NULL)
return FALSE; return FALSE;
*progress = gtk_css_number_value_get (number, 1); *progress = _gtk_css_number_value_get (number, 1);
gtk_css_value_unref (number); _gtk_css_value_unref (number);
if (*progress > 1.0) if (*progress > 1.0)
{ {
@@ -323,7 +323,7 @@ parse_image (GtkCssParser *parser,
{ {
GtkCssValue *color; GtkCssValue *color;
color = gtk_css_color_value_parse (parser); color = _gtk_css_color_value_parse (parser);
if (color == NULL) if (color == NULL)
return FALSE; return FALSE;
@@ -399,9 +399,12 @@ gtk_css_image_cross_fade_print (GtkCssImage *image,
} }
static GtkCssImage * static GtkCssImage *
gtk_css_image_cross_fade_compute (GtkCssImage *image, gtk_css_image_cross_fade_compute (GtkCssImage *image,
guint property_id, guint property_id,
GtkCssComputeContext *context) GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssVariableSet *variables)
{ {
GtkCssImageCrossFade *self = GTK_CSS_IMAGE_CROSS_FADE (image); GtkCssImageCrossFade *self = GTK_CSS_IMAGE_CROSS_FADE (image);
GtkCssImageCrossFade *result; GtkCssImageCrossFade *result;
@@ -416,7 +419,7 @@ gtk_css_image_cross_fade_compute (GtkCssImage *image,
gtk_css_image_cross_fade_add (result, gtk_css_image_cross_fade_add (result,
entry->has_progress, entry->has_progress,
entry->progress, entry->progress,
_gtk_css_image_compute (entry->image, property_id, context)); _gtk_css_image_compute (entry->image, property_id, provider, style, parent_style, variables));
} }
return GTK_CSS_IMAGE (result); return GTK_CSS_IMAGE (result);
+21 -12
View File
@@ -105,7 +105,7 @@ gtk_css_image_fallback_print (GtkCssImage *image,
{ {
if (fallback->n_images > 0) if (fallback->n_images > 0)
g_string_append (string, ","); g_string_append (string, ",");
gtk_css_value_print (fallback->color, string); _gtk_css_value_print (fallback->color, string);
} }
g_string_append (string, ")"); g_string_append (string, ")");
@@ -124,7 +124,7 @@ gtk_css_image_fallback_dispose (GObject *object)
if (fallback->color) if (fallback->color)
{ {
gtk_css_value_unref (fallback->color); _gtk_css_value_unref (fallback->color);
fallback->color = NULL; fallback->color = NULL;
} }
@@ -133,9 +133,12 @@ gtk_css_image_fallback_dispose (GObject *object)
static GtkCssImage * static GtkCssImage *
gtk_css_image_fallback_compute (GtkCssImage *image, gtk_css_image_fallback_compute (GtkCssImage *image,
guint property_id, guint property_id,
GtkCssComputeContext *context) GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssVariableSet *variables)
{ {
GtkCssImageFallback *fallback = GTK_CSS_IMAGE_FALLBACK (image); GtkCssImageFallback *fallback = GTK_CSS_IMAGE_FALLBACK (image);
GtkCssImageFallback *copy; GtkCssImageFallback *copy;
@@ -146,9 +149,12 @@ gtk_css_image_fallback_compute (GtkCssImage *image,
GtkCssValue *computed_color = NULL; GtkCssValue *computed_color = NULL;
if (fallback->color) if (fallback->color)
computed_color = gtk_css_value_compute (fallback->color, computed_color = _gtk_css_value_compute (fallback->color,
property_id, property_id,
context); provider,
style,
parent_style,
variables);
/* image($color) that didn't change */ /* image($color) that didn't change */
if (computed_color && !fallback->images && if (computed_color && !fallback->images &&
@@ -162,7 +168,10 @@ gtk_css_image_fallback_compute (GtkCssImage *image,
{ {
copy->images[i] = _gtk_css_image_compute (fallback->images[i], copy->images[i] = _gtk_css_image_compute (fallback->images[i],
property_id, property_id,
context); provider,
style,
parent_style,
variables);
if (gtk_css_image_is_invalid (copy->images[i])) if (gtk_css_image_is_invalid (copy->images[i]))
continue; continue;
@@ -211,7 +220,7 @@ gtk_css_image_fallback_parse_arg (GtkCssParser *parser,
} }
else else
{ {
data->color = gtk_css_color_value_parse (parser); data->color = _gtk_css_color_value_parse (parser);
if (data->color == NULL) if (data->color == NULL)
return 0; return 0;
@@ -234,7 +243,7 @@ gtk_css_image_fallback_parse (GtkCssImage *image,
if (!gtk_css_parser_consume_function (parser, 1, G_MAXUINT, gtk_css_image_fallback_parse_arg, &data)) if (!gtk_css_parser_consume_function (parser, 1, G_MAXUINT, gtk_css_image_fallback_parse_arg, &data))
{ {
g_clear_pointer (&data.color, gtk_css_value_unref); g_clear_pointer (&data.color, _gtk_css_value_unref);
if (data.images) if (data.images)
g_ptr_array_free (data.images, TRUE); g_ptr_array_free (data.images, TRUE);
return FALSE; return FALSE;
@@ -267,7 +276,7 @@ gtk_css_image_fallback_equal (GtkCssImage *image1,
if (fallback2->used >= 0) if (fallback2->used >= 0)
return FALSE; return FALSE;
return gtk_css_value_equal (fallback1->color, fallback2->color); return _gtk_css_value_equal (fallback1->color, fallback2->color);
} }
if (fallback2->used < 0) if (fallback2->used < 0)
+9 -6
View File
@@ -138,9 +138,12 @@ gtk_css_image_icon_theme_print (GtkCssImage *image,
} }
static GtkCssImage * static GtkCssImage *
gtk_css_image_icon_theme_compute (GtkCssImage *image, gtk_css_image_icon_theme_compute (GtkCssImage *image,
guint property_id, guint property_id,
GtkCssComputeContext *context) GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssVariableSet *variables)
{ {
GtkCssImageIconTheme *icon_theme = GTK_CSS_IMAGE_ICON_THEME (image); GtkCssImageIconTheme *icon_theme = GTK_CSS_IMAGE_ICON_THEME (image);
GtkCssImageIconTheme *copy; GtkCssImageIconTheme *copy;
@@ -149,12 +152,12 @@ gtk_css_image_icon_theme_compute (GtkCssImage *image,
copy = g_object_new (GTK_TYPE_CSS_IMAGE_ICON_THEME, NULL); copy = g_object_new (GTK_TYPE_CSS_IMAGE_ICON_THEME, NULL);
copy->name = g_strdup (icon_theme->name); copy->name = g_strdup (icon_theme->name);
settings = gtk_style_provider_get_settings (context->provider); settings = gtk_style_provider_get_settings (provider);
display = _gtk_settings_get_display (settings); display = _gtk_settings_get_display (settings);
copy->icon_theme = gtk_icon_theme_get_for_display (display); copy->icon_theme = gtk_icon_theme_get_for_display (display);
copy->serial = gtk_icon_theme_get_serial (copy->icon_theme); copy->serial = gtk_icon_theme_get_serial (copy->icon_theme);
copy->scale = gtk_style_provider_get_scale (context->provider); copy->scale = gtk_style_provider_get_scale (provider);
gtk_css_style_lookup_symbolic_colors (context->style, copy->colors); gtk_css_style_lookup_symbolic_colors (style, copy->colors);
return GTK_CSS_IMAGE (copy); return GTK_CSS_IMAGE (copy);
} }
+38 -35
View File
@@ -46,7 +46,7 @@ gtk_css_image_linear_get_repeating_start_end (GtkCssImageLinear *linear,
if (stop->offset == NULL) if (stop->offset == NULL)
*start = 0; *start = 0;
else else
*start = gtk_css_number_value_get (stop->offset, length) / length; *start = _gtk_css_number_value_get (stop->offset, length) / length;
*end = *start; *end = *start;
@@ -57,7 +57,7 @@ gtk_css_image_linear_get_repeating_start_end (GtkCssImageLinear *linear,
if (stop->offset == NULL) if (stop->offset == NULL)
continue; continue;
pos = gtk_css_number_value_get (stop->offset, length) / length; pos = _gtk_css_number_value_get (stop->offset, length) / length;
*end = MAX (pos, *end); *end = MAX (pos, *end);
} }
@@ -174,7 +174,7 @@ gtk_css_image_linear_snapshot (GtkCssImage *image,
} }
else else
{ {
angle = gtk_css_number_value_get (linear->angle, 100); angle = _gtk_css_number_value_get (linear->angle, 100);
} }
gtk_css_image_linear_compute_start_point (angle, gtk_css_image_linear_compute_start_point (angle,
@@ -224,7 +224,7 @@ gtk_css_image_linear_snapshot (GtkCssImage *image,
} }
else else
{ {
pos = gtk_css_number_value_get (stop->offset, length) / length; pos = _gtk_css_number_value_get (stop->offset, length) / length;
pos = CLAMP (pos, 0.0, 1.0); pos = CLAMP (pos, 0.0, 1.0);
} }
@@ -273,18 +273,18 @@ gtk_css_image_linear_parse_color_stop (GtkCssImageLinear *self,
{ {
GtkCssImageLinearColorStop stop; GtkCssImageLinearColorStop stop;
stop.color = gtk_css_color_value_parse (parser); stop.color = _gtk_css_color_value_parse (parser);
if (stop.color == NULL) if (stop.color == NULL)
return 0; return 0;
if (gtk_css_number_value_can_parse (parser)) if (gtk_css_number_value_can_parse (parser))
{ {
stop.offset = gtk_css_number_value_parse (parser, stop.offset = _gtk_css_number_value_parse (parser,
GTK_CSS_PARSE_PERCENT GTK_CSS_PARSE_PERCENT
| GTK_CSS_PARSE_LENGTH); | GTK_CSS_PARSE_LENGTH);
if (stop.offset == NULL) if (stop.offset == NULL)
{ {
gtk_css_value_unref (stop.color); _gtk_css_value_unref (stop.color);
return 0; return 0;
} }
} }
@@ -359,7 +359,7 @@ gtk_css_image_linear_parse_first_arg (GtkCssImageLinear *linear,
} }
else if (gtk_css_number_value_can_parse (parser)) else if (gtk_css_number_value_can_parse (parser))
{ {
linear->angle = gtk_css_number_value_parse (parser, GTK_CSS_PARSE_ANGLE); linear->angle = _gtk_css_number_value_parse (parser, GTK_CSS_PARSE_ANGLE);
if (linear->angle == NULL) if (linear->angle == NULL)
return 0; return 0;
@@ -464,7 +464,7 @@ gtk_css_image_linear_print (GtkCssImage *image,
} }
else else
{ {
gtk_css_value_print (linear->angle, string); _gtk_css_value_print (linear->angle, string);
g_string_append (string, ", "); g_string_append (string, ", ");
} }
@@ -475,12 +475,12 @@ gtk_css_image_linear_print (GtkCssImage *image,
if (i > 0) if (i > 0)
g_string_append (string, ", "); g_string_append (string, ", ");
gtk_css_value_print (stop->color, string); _gtk_css_value_print (stop->color, string);
if (stop->offset) if (stop->offset)
{ {
g_string_append (string, " "); g_string_append (string, " ");
gtk_css_value_print (stop->offset, string); _gtk_css_value_print (stop->offset, string);
} }
} }
@@ -488,9 +488,12 @@ gtk_css_image_linear_print (GtkCssImage *image,
} }
static GtkCssImage * static GtkCssImage *
gtk_css_image_linear_compute (GtkCssImage *image, gtk_css_image_linear_compute (GtkCssImage *image,
guint property_id, guint property_id,
GtkCssComputeContext *context) GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssVariableSet *variables)
{ {
GtkCssImageLinear *linear = GTK_CSS_IMAGE_LINEAR (image); GtkCssImageLinear *linear = GTK_CSS_IMAGE_LINEAR (image);
GtkCssImageLinear *copy; GtkCssImageLinear *copy;
@@ -501,7 +504,7 @@ gtk_css_image_linear_compute (GtkCssImage *image,
copy->side = linear->side; copy->side = linear->side;
if (linear->angle) if (linear->angle)
copy->angle = gtk_css_value_compute (linear->angle, property_id, context); copy->angle = _gtk_css_value_compute (linear->angle, property_id, provider, style, parent_style, variables);
copy->n_stops = linear->n_stops; copy->n_stops = linear->n_stops;
copy->color_stops = g_malloc (sizeof (GtkCssImageLinearColorStop) * copy->n_stops); copy->color_stops = g_malloc (sizeof (GtkCssImageLinearColorStop) * copy->n_stops);
@@ -510,11 +513,11 @@ gtk_css_image_linear_compute (GtkCssImage *image,
const GtkCssImageLinearColorStop *stop = &linear->color_stops[i]; const GtkCssImageLinearColorStop *stop = &linear->color_stops[i];
GtkCssImageLinearColorStop *scopy = &copy->color_stops[i]; GtkCssImageLinearColorStop *scopy = &copy->color_stops[i];
scopy->color = gtk_css_value_compute (stop->color, property_id, context); scopy->color = _gtk_css_value_compute (stop->color, property_id, provider, style, parent_style, variables);
if (stop->offset) if (stop->offset)
{ {
scopy->offset = gtk_css_value_compute (stop->offset, property_id, context); scopy->offset = _gtk_css_value_compute (stop->offset, property_id, provider, style, parent_style, variables);
} }
else else
{ {
@@ -556,7 +559,7 @@ gtk_css_image_linear_transition (GtkCssImage *start_image,
result->side = start->side; result->side = start->side;
if (result->side == 0) if (result->side == 0)
result->angle = gtk_css_value_transition (start->angle, end->angle, property_id, progress); result->angle = _gtk_css_value_transition (start->angle, end->angle, property_id, progress);
if (result->angle == NULL) if (result->angle == NULL)
goto fail; goto fail;
@@ -578,22 +581,22 @@ gtk_css_image_linear_transition (GtkCssImage *start_image,
} }
else else
{ {
stop->offset = gtk_css_value_transition (start_stop->offset, stop->offset = _gtk_css_value_transition (start_stop->offset,
end_stop->offset, end_stop->offset,
property_id, property_id,
progress); progress);
if (stop->offset == NULL) if (stop->offset == NULL)
goto fail; goto fail;
} }
stop->color = gtk_css_value_transition (start_stop->color, stop->color = _gtk_css_value_transition (start_stop->color,
end_stop->color, end_stop->color,
property_id, property_id,
progress); progress);
if (stop->color == NULL) if (stop->color == NULL)
{ {
if (stop->offset) if (stop->offset)
gtk_css_value_unref (stop->offset); _gtk_css_value_unref (stop->offset);
goto fail; goto fail;
} }
@@ -617,7 +620,7 @@ gtk_css_image_linear_equal (GtkCssImage *image1,
if (linear1->repeating != linear2->repeating || if (linear1->repeating != linear2->repeating ||
linear1->side != linear2->side || linear1->side != linear2->side ||
(linear1->side == 0 && !gtk_css_value_equal (linear1->angle, linear2->angle)) || (linear1->side == 0 && !_gtk_css_value_equal (linear1->angle, linear2->angle)) ||
linear1->n_stops != linear2->n_stops) linear1->n_stops != linear2->n_stops)
return FALSE; return FALSE;
@@ -626,8 +629,8 @@ gtk_css_image_linear_equal (GtkCssImage *image1,
const GtkCssImageLinearColorStop *stop1 = &linear1->color_stops[i]; const GtkCssImageLinearColorStop *stop1 = &linear1->color_stops[i];
const GtkCssImageLinearColorStop *stop2 = &linear2->color_stops[i]; const GtkCssImageLinearColorStop *stop2 = &linear2->color_stops[i];
if (!gtk_css_value_equal0 (stop1->offset, stop2->offset) || if (!_gtk_css_value_equal0 (stop1->offset, stop2->offset) ||
!gtk_css_value_equal (stop1->color, stop2->color)) !_gtk_css_value_equal (stop1->color, stop2->color))
return FALSE; return FALSE;
} }
@@ -644,16 +647,16 @@ gtk_css_image_linear_dispose (GObject *object)
{ {
GtkCssImageLinearColorStop *stop = &linear->color_stops[i]; GtkCssImageLinearColorStop *stop = &linear->color_stops[i];
gtk_css_value_unref (stop->color); _gtk_css_value_unref (stop->color);
if (stop->offset) if (stop->offset)
gtk_css_value_unref (stop->offset); _gtk_css_value_unref (stop->offset);
} }
g_free (linear->color_stops); g_free (linear->color_stops);
linear->side = 0; linear->side = 0;
if (linear->angle) if (linear->angle)
{ {
gtk_css_value_unref (linear->angle); _gtk_css_value_unref (linear->angle);
linear->angle = NULL; linear->angle = NULL;
} }
+6 -4
View File
@@ -20,7 +20,6 @@
#include "config.h" #include "config.h"
#include "gtkcssimagepaintableprivate.h" #include "gtkcssimagepaintableprivate.h"
#include "gtkcssvalueprivate.h"
#include "gtkprivate.h" #include "gtkprivate.h"
@@ -97,9 +96,12 @@ gtk_css_image_paintable_get_static_image (GtkCssImage *image)
} }
static GtkCssImage * static GtkCssImage *
gtk_css_image_paintable_compute (GtkCssImage *image, gtk_css_image_paintable_compute (GtkCssImage *image,
guint property_id, guint property_id,
GtkCssComputeContext *context) GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssVariableSet *variables)
{ {
return gtk_css_image_paintable_get_static_image (image); return gtk_css_image_paintable_get_static_image (image);
} }
+8 -3
View File
@@ -27,7 +27,6 @@
#include "gtk/css/gtkcssparserprivate.h" #include "gtk/css/gtkcssparserprivate.h"
#include "gtk/gtkcsstypesprivate.h" #include "gtk/gtkcsstypesprivate.h"
#include "gtk/gtkcssvariablesetprivate.h" #include "gtk/gtkcssvariablesetprivate.h"
#include "gtk/gtkcssvalueprivate.h"
#include "gtk/gtksnapshot.h" #include "gtk/gtksnapshot.h"
#include "gtk/gtkstyleprovider.h" #include "gtk/gtkstyleprovider.h"
@@ -62,7 +61,10 @@ struct _GtkCssImageClass
/* create "computed value" in CSS terms, returns a new reference */ /* create "computed value" in CSS terms, returns a new reference */
GtkCssImage *(* compute) (GtkCssImage *image, GtkCssImage *(* compute) (GtkCssImage *image,
guint property_id, guint property_id,
GtkCssComputeContext *context); GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssVariableSet *variables);
/* compare two images for equality */ /* compare two images for equality */
gboolean (* equal) (GtkCssImage *image1, gboolean (* equal) (GtkCssImage *image1,
GtkCssImage *image2); GtkCssImage *image2);
@@ -104,7 +106,10 @@ double _gtk_css_image_get_aspect_ratio (GtkCssImage *
GtkCssImage * _gtk_css_image_compute (GtkCssImage *image, GtkCssImage * _gtk_css_image_compute (GtkCssImage *image,
guint property_id, guint property_id,
GtkCssComputeContext *context); GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssVariableSet *variables);
gboolean _gtk_css_image_equal (GtkCssImage *image1, gboolean _gtk_css_image_equal (GtkCssImage *image1,
GtkCssImage *image2) G_GNUC_PURE; GtkCssImage *image2) G_GNUC_PURE;
GtkCssImage * _gtk_css_image_transition (GtkCssImage *start, GtkCssImage * _gtk_css_image_transition (GtkCssImage *start,
+53 -50
View File
@@ -47,7 +47,7 @@ gtk_css_image_radial_get_start_end (GtkCssImageRadial *radial,
if (stop->offset == NULL) if (stop->offset == NULL)
*start = 0; *start = 0;
else else
*start = gtk_css_number_value_get (stop->offset, radius) / radius; *start = _gtk_css_number_value_get (stop->offset, radius) / radius;
*end = *start; *end = *start;
@@ -58,7 +58,7 @@ gtk_css_image_radial_get_start_end (GtkCssImageRadial *radial,
if (stop->offset == NULL) if (stop->offset == NULL)
continue; continue;
pos = gtk_css_number_value_get (stop->offset, radius) / radius; pos = _gtk_css_number_value_get (stop->offset, radius) / radius;
*end = MAX (pos, *end); *end = MAX (pos, *end);
} }
@@ -96,7 +96,7 @@ gtk_css_image_radial_snapshot (GtkCssImage *image,
switch (radial->size) switch (radial->size)
{ {
case GTK_CSS_EXPLICIT_SIZE: case GTK_CSS_EXPLICIT_SIZE:
hradius = gtk_css_number_value_get (radial->sizes[0], width); hradius = _gtk_css_number_value_get (radial->sizes[0], width);
break; break;
case GTK_CSS_CLOSEST_SIDE: case GTK_CSS_CLOSEST_SIDE:
hradius = MIN (MIN (x, width - x), MIN (y, height - y)); hradius = MIN (MIN (x, width - x), MIN (y, height - y));
@@ -128,8 +128,8 @@ gtk_css_image_radial_snapshot (GtkCssImage *image,
switch (radial->size) switch (radial->size)
{ {
case GTK_CSS_EXPLICIT_SIZE: case GTK_CSS_EXPLICIT_SIZE:
hradius = gtk_css_number_value_get (radial->sizes[0], width); hradius = _gtk_css_number_value_get (radial->sizes[0], width);
vradius = gtk_css_number_value_get (radial->sizes[1], height); vradius = _gtk_css_number_value_get (radial->sizes[1], height);
break; break;
case GTK_CSS_CLOSEST_SIDE: case GTK_CSS_CLOSEST_SIDE:
hradius = MIN (x, width - x); hradius = MIN (x, width - x);
@@ -176,7 +176,7 @@ gtk_css_image_radial_snapshot (GtkCssImage *image,
continue; continue;
} }
else else
pos = MIN (1.0, gtk_css_number_value_get (stop->offset, hradius) / hradius); pos = MIN (1.0, _gtk_css_number_value_get (stop->offset, hradius) / hradius);
pos = MAX (pos, offset); pos = MAX (pos, offset);
step = (pos - offset) / (i - last); step = (pos - offset) / (i - last);
@@ -223,18 +223,18 @@ gtk_css_image_radial_parse_color_stop (GtkCssImageRadial *radial,
{ {
GtkCssImageRadialColorStop stop; GtkCssImageRadialColorStop stop;
stop.color = gtk_css_color_value_parse (parser); stop.color = _gtk_css_color_value_parse (parser);
if (stop.color == NULL) if (stop.color == NULL)
return 0; return 0;
if (gtk_css_number_value_can_parse (parser)) if (gtk_css_number_value_can_parse (parser))
{ {
stop.offset = gtk_css_number_value_parse (parser, stop.offset = _gtk_css_number_value_parse (parser,
GTK_CSS_PARSE_PERCENT GTK_CSS_PARSE_PERCENT
| GTK_CSS_PARSE_LENGTH); | GTK_CSS_PARSE_LENGTH);
if (stop.offset == NULL) if (stop.offset == NULL)
{ {
gtk_css_value_unref (stop.color); _gtk_css_value_unref (stop.color);
return 0; return 0;
} }
} }
@@ -294,12 +294,12 @@ gtk_css_image_radial_parse_first_arg (GtkCssImageRadial *radial,
if (!has_size && gtk_css_number_value_can_parse (parser)) if (!has_size && gtk_css_number_value_can_parse (parser))
{ {
radial->sizes[0] = gtk_css_number_value_parse (parser, GTK_CSS_PARSE_LENGTH | GTK_CSS_PARSE_PERCENT); radial->sizes[0] = _gtk_css_number_value_parse (parser, GTK_CSS_PARSE_LENGTH | GTK_CSS_PARSE_PERCENT);
if (radial->sizes[0] == NULL) if (radial->sizes[0] == NULL)
return 0; return 0;
if (gtk_css_number_value_can_parse (parser)) if (gtk_css_number_value_can_parse (parser))
{ {
radial->sizes[1] = gtk_css_number_value_parse (parser, GTK_CSS_PARSE_LENGTH | GTK_CSS_PARSE_PERCENT); radial->sizes[1] = _gtk_css_number_value_parse (parser, GTK_CSS_PARSE_LENGTH | GTK_CSS_PARSE_PERCENT);
if (radial->sizes[1] == NULL) if (radial->sizes[1] == NULL)
return 0; return 0;
} }
@@ -323,8 +323,8 @@ gtk_css_image_radial_parse_first_arg (GtkCssImageRadial *radial,
} }
else else
{ {
radial->position = _gtk_css_position_value_new (gtk_css_number_value_new (50, GTK_CSS_PERCENT), radial->position = _gtk_css_position_value_new (_gtk_css_number_value_new (50, GTK_CSS_PERCENT),
gtk_css_number_value_new (50, GTK_CSS_PERCENT)); _gtk_css_number_value_new (50, GTK_CSS_PERCENT));
} }
if (!has_size) if (!has_size)
@@ -358,7 +358,7 @@ gtk_css_image_radial_parse_first_arg (GtkCssImageRadial *radial,
if (has_size && !radial->circle) if (has_size && !radial->circle)
{ {
if (radial->sizes[0] && !radial->sizes[1]) if (radial->sizes[0] && !radial->sizes[1])
radial->sizes[1] = gtk_css_value_ref (radial->sizes[0]); radial->sizes[1] = _gtk_css_value_ref (radial->sizes[0]);
} }
if (found_one) if (found_one)
@@ -456,16 +456,16 @@ gtk_css_image_radial_print (GtkCssImage *image,
else else
{ {
if (radial->sizes[0]) if (radial->sizes[0])
gtk_css_value_print (radial->sizes[0], string); _gtk_css_value_print (radial->sizes[0], string);
if (radial->sizes[1]) if (radial->sizes[1])
{ {
g_string_append (string, " "); g_string_append (string, " ");
gtk_css_value_print (radial->sizes[1], string); _gtk_css_value_print (radial->sizes[1], string);
} }
} }
g_string_append (string, " at "); g_string_append (string, " at ");
gtk_css_value_print (radial->position, string); _gtk_css_value_print (radial->position, string);
g_string_append (string, ", "); g_string_append (string, ", ");
@@ -476,12 +476,12 @@ gtk_css_image_radial_print (GtkCssImage *image,
if (i > 0) if (i > 0)
g_string_append (string, ", "); g_string_append (string, ", ");
gtk_css_value_print (stop->color, string); _gtk_css_value_print (stop->color, string);
if (stop->offset) if (stop->offset)
{ {
g_string_append (string, " "); g_string_append (string, " ");
gtk_css_value_print (stop->offset, string); _gtk_css_value_print (stop->offset, string);
} }
} }
@@ -489,9 +489,12 @@ gtk_css_image_radial_print (GtkCssImage *image,
} }
static GtkCssImage * static GtkCssImage *
gtk_css_image_radial_compute (GtkCssImage *image, gtk_css_image_radial_compute (GtkCssImage *image,
guint property_id, guint property_id,
GtkCssComputeContext *context) GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssVariableSet *variables)
{ {
GtkCssImageRadial *radial = GTK_CSS_IMAGE_RADIAL (image); GtkCssImageRadial *radial = GTK_CSS_IMAGE_RADIAL (image);
GtkCssImageRadial *copy; GtkCssImageRadial *copy;
@@ -502,13 +505,13 @@ gtk_css_image_radial_compute (GtkCssImage *image,
copy->circle = radial->circle; copy->circle = radial->circle;
copy->size = radial->size; copy->size = radial->size;
copy->position = gtk_css_value_compute (radial->position, property_id, context); copy->position = _gtk_css_value_compute (radial->position, property_id, provider, style, parent_style, variables);
if (radial->sizes[0]) if (radial->sizes[0])
copy->sizes[0] = gtk_css_value_compute (radial->sizes[0], property_id, context); copy->sizes[0] = _gtk_css_value_compute (radial->sizes[0], property_id, provider, style, parent_style, variables);
if (radial->sizes[1]) if (radial->sizes[1])
copy->sizes[1] = gtk_css_value_compute (radial->sizes[1], property_id, context); copy->sizes[1] = _gtk_css_value_compute (radial->sizes[1], property_id, provider, style, parent_style, variables);
copy->n_stops = radial->n_stops; copy->n_stops = radial->n_stops;
copy->color_stops = g_malloc (sizeof (GtkCssImageRadialColorStop) * copy->n_stops); copy->color_stops = g_malloc (sizeof (GtkCssImageRadialColorStop) * copy->n_stops);
@@ -517,11 +520,11 @@ gtk_css_image_radial_compute (GtkCssImage *image,
const GtkCssImageRadialColorStop *stop = &radial->color_stops[i]; const GtkCssImageRadialColorStop *stop = &radial->color_stops[i];
GtkCssImageRadialColorStop *scopy = &copy->color_stops[i]; GtkCssImageRadialColorStop *scopy = &copy->color_stops[i];
scopy->color = gtk_css_value_compute (stop->color, property_id, context); scopy->color = _gtk_css_value_compute (stop->color, property_id, provider, style, parent_style, variables);
if (stop->offset) if (stop->offset)
{ {
scopy->offset = gtk_css_value_compute (stop->offset, property_id, context); scopy->offset = _gtk_css_value_compute (stop->offset, property_id, provider, style, parent_style, variables);
} }
else else
{ {
@@ -562,13 +565,13 @@ gtk_css_image_radial_transition (GtkCssImage *start_image,
result->circle = start->circle; result->circle = start->circle;
result->size = start->size; result->size = start->size;
result->position = gtk_css_value_transition (start->position, end->position, property_id, progress); result->position = _gtk_css_value_transition (start->position, end->position, property_id, progress);
if (result->position == NULL) if (result->position == NULL)
goto fail; goto fail;
if (start->sizes[0] && end->sizes[0]) if (start->sizes[0] && end->sizes[0])
{ {
result->sizes[0] = gtk_css_value_transition (start->sizes[0], end->sizes[0], property_id, progress); result->sizes[0] = _gtk_css_value_transition (start->sizes[0], end->sizes[0], property_id, progress);
if (result->sizes[0] == NULL) if (result->sizes[0] == NULL)
goto fail; goto fail;
} }
@@ -577,7 +580,7 @@ gtk_css_image_radial_transition (GtkCssImage *start_image,
if (start->sizes[1] && end->sizes[1]) if (start->sizes[1] && end->sizes[1])
{ {
result->sizes[1] = gtk_css_value_transition (start->sizes[1], end->sizes[1], property_id, progress); result->sizes[1] = _gtk_css_value_transition (start->sizes[1], end->sizes[1], property_id, progress);
if (result->sizes[1] == NULL) if (result->sizes[1] == NULL)
goto fail; goto fail;
} }
@@ -601,22 +604,22 @@ gtk_css_image_radial_transition (GtkCssImage *start_image,
} }
else else
{ {
stop->offset = gtk_css_value_transition (start_stop->offset, stop->offset = _gtk_css_value_transition (start_stop->offset,
end_stop->offset, end_stop->offset,
property_id, property_id,
progress); progress);
if (stop->offset == NULL) if (stop->offset == NULL)
goto fail; goto fail;
} }
stop->color = gtk_css_value_transition (start_stop->color, stop->color = _gtk_css_value_transition (start_stop->color,
end_stop->color, end_stop->color,
property_id, property_id,
progress); progress);
if (stop->color == NULL) if (stop->color == NULL)
{ {
if (stop->offset) if (stop->offset)
gtk_css_value_unref (stop->offset); _gtk_css_value_unref (stop->offset);
goto fail; goto fail;
} }
@@ -640,11 +643,11 @@ gtk_css_image_radial_equal (GtkCssImage *image1,
if (radial1->repeating != radial2->repeating || if (radial1->repeating != radial2->repeating ||
radial1->size != radial2->size || radial1->size != radial2->size ||
!gtk_css_value_equal (radial1->position, radial2->position) || !_gtk_css_value_equal (radial1->position, radial2->position) ||
((radial1->sizes[0] == NULL) != (radial2->sizes[0] == NULL)) || ((radial1->sizes[0] == NULL) != (radial2->sizes[0] == NULL)) ||
(radial1->sizes[0] && radial2->sizes[0] && !gtk_css_value_equal (radial1->sizes[0], radial2->sizes[0])) || (radial1->sizes[0] && radial2->sizes[0] && !_gtk_css_value_equal (radial1->sizes[0], radial2->sizes[0])) ||
((radial1->sizes[1] == NULL) != (radial2->sizes[1] == NULL)) || ((radial1->sizes[1] == NULL) != (radial2->sizes[1] == NULL)) ||
(radial1->sizes[1] && radial2->sizes[1] && !gtk_css_value_equal (radial1->sizes[1], radial2->sizes[1])) || (radial1->sizes[1] && radial2->sizes[1] && !_gtk_css_value_equal (radial1->sizes[1], radial2->sizes[1])) ||
radial1->n_stops != radial2->n_stops) radial1->n_stops != radial2->n_stops)
return FALSE; return FALSE;
@@ -653,8 +656,8 @@ gtk_css_image_radial_equal (GtkCssImage *image1,
const GtkCssImageRadialColorStop *stop1 = &radial1->color_stops[i]; const GtkCssImageRadialColorStop *stop1 = &radial1->color_stops[i];
const GtkCssImageRadialColorStop *stop2 = &radial2->color_stops[i]; const GtkCssImageRadialColorStop *stop2 = &radial2->color_stops[i];
if (!gtk_css_value_equal0 (stop1->offset, stop2->offset) || if (!_gtk_css_value_equal0 (stop1->offset, stop2->offset) ||
!gtk_css_value_equal (stop1->color, stop2->color)) !_gtk_css_value_equal (stop1->color, stop2->color))
return FALSE; return FALSE;
} }
@@ -671,22 +674,22 @@ gtk_css_image_radial_dispose (GObject *object)
{ {
GtkCssImageRadialColorStop *stop = &radial->color_stops[i]; GtkCssImageRadialColorStop *stop = &radial->color_stops[i];
gtk_css_value_unref (stop->color); _gtk_css_value_unref (stop->color);
if (stop->offset) if (stop->offset)
gtk_css_value_unref (stop->offset); _gtk_css_value_unref (stop->offset);
} }
g_free (radial->color_stops); g_free (radial->color_stops);
if (radial->position) if (radial->position)
{ {
gtk_css_value_unref (radial->position); _gtk_css_value_unref (radial->position);
radial->position = NULL; radial->position = NULL;
} }
for (i = 0; i < 2; i++) for (i = 0; i < 2; i++)
if (radial->sizes[i]) if (radial->sizes[i])
{ {
gtk_css_value_unref (radial->sizes[i]); _gtk_css_value_unref (radial->sizes[i]);
radial->sizes[i] = NULL; radial->sizes[i] = NULL;
} }
+15 -12
View File
@@ -44,7 +44,7 @@ gtk_css_image_recolor_print (GtkCssImage *image,
if (recolor->palette) if (recolor->palette)
{ {
g_string_append (string, ","); g_string_append (string, ",");
gtk_css_value_print (recolor->palette, string); _gtk_css_value_print (recolor->palette, string);
} }
g_string_append (string, ")"); g_string_append (string, ")");
} }
@@ -54,7 +54,7 @@ gtk_css_image_recolor_dispose (GObject *object)
{ {
GtkCssImageRecolor *recolor = GTK_CSS_IMAGE_RECOLOR (object); GtkCssImageRecolor *recolor = GTK_CSS_IMAGE_RECOLOR (object);
g_clear_pointer (&recolor->palette, gtk_css_value_unref); g_clear_pointer (&recolor->palette, _gtk_css_value_unref);
g_clear_object (&recolor->file); g_clear_object (&recolor->file);
g_clear_object (&recolor->texture); g_clear_object (&recolor->texture);
@@ -201,9 +201,12 @@ gtk_css_image_recolor_snapshot (GtkCssImage *image,
} }
static GtkCssImage * static GtkCssImage *
gtk_css_image_recolor_compute (GtkCssImage *image, gtk_css_image_recolor_compute (GtkCssImage *image,
guint property_id, guint property_id,
GtkCssComputeContext *context) GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssVariableSet *variables)
{ {
GtkCssImageRecolor *recolor = GTK_CSS_IMAGE_RECOLOR (image); GtkCssImageRecolor *recolor = GTK_CSS_IMAGE_RECOLOR (image);
GtkCssValue *palette; GtkCssValue *palette;
@@ -211,23 +214,23 @@ gtk_css_image_recolor_compute (GtkCssImage *image,
int scale; int scale;
GError *error = NULL; GError *error = NULL;
scale = gtk_style_provider_get_scale (context->provider); scale = gtk_style_provider_get_scale (provider);
if (recolor->palette) if (recolor->palette)
palette = gtk_css_value_compute (recolor->palette, property_id, context); palette = _gtk_css_value_compute (recolor->palette, property_id, provider, style, parent_style, variables);
else else
palette = gtk_css_value_ref (context->style->core->icon_palette); palette = _gtk_css_value_ref (style->core->icon_palette);
img = gtk_css_image_recolor_load (recolor, context->style, palette, scale, &error); img = gtk_css_image_recolor_load (recolor, style, palette, scale, &error);
if (error) if (error)
{ {
GtkCssSection *section = gtk_css_style_get_section (context->style, property_id); GtkCssSection *section = gtk_css_style_get_section (style, property_id);
gtk_style_provider_emit_error (context->provider, section, error); gtk_style_provider_emit_error (provider, section, error);
g_error_free (error); g_error_free (error);
} }
gtk_css_value_unref (palette); _gtk_css_value_unref (palette);
return img; return img;
} }
+11 -5
View File
@@ -97,9 +97,12 @@ gtk_css_image_scaled_dispose (GObject *object)
static GtkCssImage * static GtkCssImage *
gtk_css_image_scaled_compute (GtkCssImage *image, gtk_css_image_scaled_compute (GtkCssImage *image,
guint property_id, guint property_id,
GtkCssComputeContext *context) GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssVariableSet *variables)
{ {
GtkCssImageScaled *scaled = GTK_CSS_IMAGE_SCALED (image); GtkCssImageScaled *scaled = GTK_CSS_IMAGE_SCALED (image);
int scale; int scale;
@@ -107,7 +110,7 @@ gtk_css_image_scaled_compute (GtkCssImage *image,
int i; int i;
int best; int best;
scale = gtk_style_provider_get_scale (context->provider); scale = gtk_style_provider_get_scale (provider);
scale = MAX(scale, 1); scale = MAX(scale, 1);
best = 0; best = 0;
@@ -133,7 +136,10 @@ gtk_css_image_scaled_compute (GtkCssImage *image,
res->images[0] = _gtk_css_image_compute (scaled->images[best], res->images[0] = _gtk_css_image_compute (scaled->images[best],
property_id, property_id,
context); provider,
style,
parent_style,
variables);
res->scales[0] = scaled->scales[best]; res->scales[0] = scaled->scales[best];
return GTK_CSS_IMAGE (res); return GTK_CSS_IMAGE (res);
+8 -5
View File
@@ -112,9 +112,12 @@ gtk_css_image_url_snapshot (GtkCssImage *image,
} }
static GtkCssImage * static GtkCssImage *
gtk_css_image_url_compute (GtkCssImage *image, gtk_css_image_url_compute (GtkCssImage *image,
guint property_id, guint property_id,
GtkCssComputeContext *context) GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssVariableSet *variables)
{ {
GtkCssImageUrl *url = GTK_CSS_IMAGE_URL (image); GtkCssImageUrl *url = GTK_CSS_IMAGE_URL (image);
GtkCssImage *copy; GtkCssImage *copy;
@@ -123,8 +126,8 @@ gtk_css_image_url_compute (GtkCssImage *image,
copy = gtk_css_image_url_load_image (url, &error); copy = gtk_css_image_url_load_image (url, &error);
if (error) if (error)
{ {
GtkCssSection *section = gtk_css_style_get_section (context->style, property_id); GtkCssSection *section = gtk_css_style_get_section (style, property_id);
gtk_style_provider_emit_error (context->provider, section, error); gtk_style_provider_emit_error (provider, section, error);
g_error_free (error); g_error_free (error);
} }
+11 -8
View File
@@ -34,23 +34,26 @@ gtk_css_value_image_free (GtkCssValue *value)
} }
static GtkCssValue * static GtkCssValue *
gtk_css_value_image_compute (GtkCssValue *value, gtk_css_value_image_compute (GtkCssValue *value,
guint property_id, guint property_id,
GtkCssComputeContext *context) GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssVariableSet *variables)
{ {
GtkCssImage *image, *computed; GtkCssImage *image, *computed;
image = _gtk_css_image_value_get_image (value); image = _gtk_css_image_value_get_image (value);
if (image == NULL) if (image == NULL)
return gtk_css_value_ref (value); return _gtk_css_value_ref (value);
computed = _gtk_css_image_compute (image, property_id, context); computed = _gtk_css_image_compute (image, property_id, provider, style, parent_style, variables);
if (computed == image) if (computed == image)
{ {
g_object_unref (computed); g_object_unref (computed);
return gtk_css_value_ref (value); return _gtk_css_value_ref (value);
} }
return _gtk_css_image_value_new (computed); return _gtk_css_image_value_new (computed);
@@ -138,9 +141,9 @@ _gtk_css_image_value_new (GtkCssImage *image)
GtkCssValue *value; GtkCssValue *value;
if (image == NULL) if (image == NULL)
return gtk_css_value_ref (&image_none_singleton); return _gtk_css_value_ref (&image_none_singleton);
value = gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_IMAGE); value = _gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_IMAGE);
value->image = image; value->image = image;
value->is_computed = gtk_css_image_is_computed (image); value->is_computed = gtk_css_image_is_computed (image);
+15 -9
View File
@@ -34,19 +34,25 @@ gtk_css_value_inherit_free (GtkCssValue *value)
} }
static GtkCssValue * static GtkCssValue *
gtk_css_value_inherit_compute (GtkCssValue *value, gtk_css_value_inherit_compute (GtkCssValue *value,
guint property_id, guint property_id,
GtkCssComputeContext *context) GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssVariableSet *variables)
{ {
if (context->parent_style) if (parent_style)
{ {
return gtk_css_value_ref (gtk_css_style_get_value (context->parent_style, property_id)); return _gtk_css_value_ref (gtk_css_style_get_value (parent_style, property_id));
} }
else else
{ {
return gtk_css_value_compute (_gtk_css_initial_value_get (), return _gtk_css_value_compute (_gtk_css_initial_value_get (),
property_id, property_id,
context); provider,
style,
parent_style,
variables);
} }
} }
@@ -89,7 +95,7 @@ static GtkCssValue inherit = { &GTK_CSS_VALUE_INHERIT, 1 };
GtkCssValue * GtkCssValue *
_gtk_css_inherit_value_new (void) _gtk_css_inherit_value_new (void)
{ {
return gtk_css_value_ref (&inherit); return _gtk_css_value_ref (&inherit);
} }
GtkCssValue * GtkCssValue *
+23 -12
View File
@@ -38,16 +38,19 @@ gtk_css_value_initial_free (GtkCssValue *value)
} }
static GtkCssValue * static GtkCssValue *
gtk_css_value_initial_compute (GtkCssValue *value, gtk_css_value_initial_compute (GtkCssValue *value,
guint property_id, guint property_id,
GtkCssComputeContext *context) GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssVariableSet *variables)
{ {
GtkSettings *settings; GtkSettings *settings;
switch (property_id) switch (property_id)
{ {
case GTK_CSS_PROPERTY_DPI: case GTK_CSS_PROPERTY_DPI:
settings = gtk_style_provider_get_settings (context->provider); settings = gtk_style_provider_get_settings (provider);
if (settings) if (settings)
{ {
int dpi_int; int dpi_int;
@@ -55,12 +58,12 @@ gtk_css_value_initial_compute (GtkCssValue *value,
g_object_get (settings, "gtk-xft-dpi", &dpi_int, NULL); g_object_get (settings, "gtk-xft-dpi", &dpi_int, NULL);
if (dpi_int > 0.0) if (dpi_int > 0.0)
return gtk_css_number_value_new (dpi_int / 1024., GTK_CSS_NUMBER); return _gtk_css_number_value_new (dpi_int / 1024., GTK_CSS_NUMBER);
} }
break; break;
case GTK_CSS_PROPERTY_FONT_FAMILY: case GTK_CSS_PROPERTY_FONT_FAMILY:
settings = gtk_style_provider_get_settings (context->provider); settings = gtk_style_provider_get_settings (provider);
if (settings && gtk_settings_get_font_family (settings) != NULL) if (settings && gtk_settings_get_font_family (settings) != NULL)
return _gtk_css_array_value_new (_gtk_css_string_value_new (gtk_settings_get_font_family (settings))); return _gtk_css_array_value_new (_gtk_css_string_value_new (gtk_settings_get_font_family (settings)));
break; break;
@@ -69,9 +72,12 @@ gtk_css_value_initial_compute (GtkCssValue *value,
break; break;
} }
return gtk_css_value_compute (_gtk_css_style_property_get_initial_value (_gtk_css_style_property_lookup_by_id (property_id)), return _gtk_css_value_compute (_gtk_css_style_property_get_initial_value (_gtk_css_style_property_lookup_by_id (property_id)),
property_id, property_id,
context); provider,
style,
parent_style,
variables);
} }
static gboolean static gboolean
@@ -113,7 +119,7 @@ static GtkCssValue initial = { &GTK_CSS_VALUE_INITIAL, 1 };
GtkCssValue * GtkCssValue *
_gtk_css_initial_value_new (void) _gtk_css_initial_value_new (void)
{ {
return gtk_css_value_ref (&initial); return _gtk_css_value_ref (&initial);
} }
GtkCssValue * GtkCssValue *
@@ -122,10 +128,15 @@ _gtk_css_initial_value_get (void)
return &initial; return &initial;
} }
GtkCssValue * GtkCssValue *
_gtk_css_initial_value_new_compute (guint property_id, _gtk_css_initial_value_new_compute (guint property_id,
GtkCssComputeContext *context) GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style)
{ {
return gtk_css_value_initial_compute (NULL, return gtk_css_value_initial_compute (NULL,
property_id, property_id,
context); provider,
style,
parent_style,
NULL);
} }
+4 -2
View File
@@ -25,8 +25,10 @@ G_BEGIN_DECLS
GtkCssValue * _gtk_css_initial_value_new (void); GtkCssValue * _gtk_css_initial_value_new (void);
GtkCssValue * _gtk_css_initial_value_get (void); GtkCssValue * _gtk_css_initial_value_get (void);
GtkCssValue * _gtk_css_initial_value_new_compute (guint property_id, GtkCssValue * _gtk_css_initial_value_new_compute (guint property_id,
GtkCssComputeContext *context); GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style);
G_END_DECLS G_END_DECLS
+19 -23
View File
@@ -74,7 +74,7 @@ _gtk_css_keyframes_unref (GtkCssKeyframes *keyframes)
{ {
for (p = 0; p < keyframes->n_properties; p++) for (p = 0; p < keyframes->n_properties; p++)
{ {
gtk_css_value_unref (KEYFRAMES_VALUE (keyframes, k, p)); _gtk_css_value_unref (KEYFRAMES_VALUE (keyframes, k, p));
KEYFRAMES_VALUE (keyframes, k, p) = NULL; KEYFRAMES_VALUE (keyframes, k, p) = NULL;
} }
@@ -103,7 +103,7 @@ gtk_css_keyframes_add_keyframe (GtkCssKeyframes *keyframes,
if (KEYFRAMES_VALUE (keyframes, k, p) == NULL) if (KEYFRAMES_VALUE (keyframes, k, p) == NULL)
continue; continue;
gtk_css_value_unref (KEYFRAMES_VALUE (keyframes, k, p)); _gtk_css_value_unref (KEYFRAMES_VALUE (keyframes, k, p));
KEYFRAMES_VALUE (keyframes, k, p) = NULL; KEYFRAMES_VALUE (keyframes, k, p) = NULL;
/* XXX: GC properties that are now unset /* XXX: GC properties that are now unset
@@ -244,9 +244,9 @@ keyframes_set_value (GtkCssKeyframes *keyframes,
p = gtk_css_keyframes_lookup_property (keyframes, _gtk_css_style_property_get_id (property)); p = gtk_css_keyframes_lookup_property (keyframes, _gtk_css_style_property_get_id (property));
if (KEYFRAMES_VALUE (keyframes, k, p)) if (KEYFRAMES_VALUE (keyframes, k, p))
gtk_css_value_unref (KEYFRAMES_VALUE (keyframes, k, p)); _gtk_css_value_unref (KEYFRAMES_VALUE (keyframes, k, p));
KEYFRAMES_VALUE (keyframes, k, p) = gtk_css_value_ref (value); KEYFRAMES_VALUE (keyframes, k, p) = _gtk_css_value_ref (value);
return TRUE; return TRUE;
} }
@@ -376,7 +376,7 @@ gtk_css_keyframes_parse_declaration (GtkCssKeyframes *keyframes,
if (!gtk_css_parser_has_token (parser, GTK_CSS_TOKEN_EOF)) if (!gtk_css_parser_has_token (parser, GTK_CSS_TOKEN_EOF))
{ {
gtk_css_parser_error_syntax (parser, "Junk at end of value"); gtk_css_parser_error_syntax (parser, "Junk at end of value");
gtk_css_value_unref (value); _gtk_css_value_unref (value);
return FALSE; return FALSE;
} }
@@ -407,7 +407,7 @@ gtk_css_keyframes_parse_declaration (GtkCssKeyframes *keyframes,
g_assert_not_reached (); g_assert_not_reached ();
} }
gtk_css_value_unref (value); _gtk_css_value_unref (value);
return TRUE; return TRUE;
} }
@@ -566,7 +566,7 @@ _gtk_css_keyframes_print (GtkCssKeyframes *keyframes,
GTK_STYLE_PROPERTY ( GTK_STYLE_PROPERTY (
_gtk_css_style_property_lookup_by_id ( _gtk_css_style_property_lookup_by_id (
keyframes->property_ids[sorted[p]])))); keyframes->property_ids[sorted[p]]))));
gtk_css_value_print (KEYFRAMES_VALUE (keyframes, k, sorted[p]), string); _gtk_css_value_print (KEYFRAMES_VALUE (keyframes, k, sorted[p]), string);
g_string_append (string, ";\n"); g_string_append (string, ";\n");
} }
@@ -615,7 +615,6 @@ _gtk_css_keyframes_compute (GtkCssKeyframes *keyframes,
GtkCssStyle *style, GtkCssStyle *style,
GtkCssStyle *parent_style) GtkCssStyle *parent_style)
{ {
GtkCssComputeContext context = { NULL, };
GtkCssKeyframes *resolved; GtkCssKeyframes *resolved;
guint k, p; guint k, p;
@@ -631,10 +630,6 @@ _gtk_css_keyframes_compute (GtkCssKeyframes *keyframes,
resolved->property_ids = g_memdup2 (keyframes->property_ids, keyframes->n_properties * sizeof (guint)); resolved->property_ids = g_memdup2 (keyframes->property_ids, keyframes->n_properties * sizeof (guint));
resolved->values = g_new0 (GtkCssValue *, resolved->n_keyframes * resolved->n_properties); resolved->values = g_new0 (GtkCssValue *, resolved->n_keyframes * resolved->n_properties);
context.provider = provider;
context.style = style;
context.parent_style = parent_style;
for (p = 0; p < resolved->n_properties; p++) for (p = 0; p < resolved->n_properties; p++)
{ {
for (k = 0; k < resolved->n_keyframes; k++) for (k = 0; k < resolved->n_keyframes; k++)
@@ -642,11 +637,12 @@ _gtk_css_keyframes_compute (GtkCssKeyframes *keyframes,
if (KEYFRAMES_VALUE (keyframes, k, p) == NULL) if (KEYFRAMES_VALUE (keyframes, k, p) == NULL)
continue; continue;
context.variables = keyframes->variables ? keyframes->variables[k] : NULL; KEYFRAMES_VALUE (resolved, k, p) = _gtk_css_value_compute (KEYFRAMES_VALUE (keyframes, k, p),
resolved->property_ids[p],
KEYFRAMES_VALUE (resolved, k, p) = gtk_css_value_compute (KEYFRAMES_VALUE (keyframes, k, p), provider,
resolved->property_ids[p], style,
&context); parent_style,
keyframes->variables ? keyframes->variables[k] : NULL);
} }
} }
@@ -712,7 +708,7 @@ _gtk_css_keyframes_get_value (GtkCssKeyframes *keyframes,
if (keyframes->keyframe_progress[k] == progress) if (keyframes->keyframe_progress[k] == progress)
{ {
return gtk_css_value_ref (KEYFRAMES_VALUE (keyframes, k, id)); return _gtk_css_value_ref (KEYFRAMES_VALUE (keyframes, k, id));
} }
else if (keyframes->keyframe_progress[k] < progress) else if (keyframes->keyframe_progress[k] < progress)
{ {
@@ -729,14 +725,14 @@ _gtk_css_keyframes_get_value (GtkCssKeyframes *keyframes,
progress = (progress - start_progress) / (end_progress - start_progress); progress = (progress - start_progress) / (end_progress - start_progress);
result = gtk_css_value_transition (start_value, result = _gtk_css_value_transition (start_value,
end_value, end_value,
keyframes->property_ids[id], keyframes->property_ids[id],
progress); progress);
/* XXX: Dear spec, what's the correct thing to do here? */ /* XXX: Dear spec, what's the correct thing to do here? */
if (result == NULL) if (result == NULL)
return gtk_css_value_ref (start_value); return _gtk_css_value_ref (start_value);
return result; return result;
} }
+22 -19
View File
@@ -34,28 +34,31 @@ static GtkCssValue *gtk_css_value_line_height_new (GtkCssValue *height);
static void static void
gtk_css_value_line_height_free (GtkCssValue *value) gtk_css_value_line_height_free (GtkCssValue *value)
{ {
gtk_css_value_unref (value->height); _gtk_css_value_unref (value->height);
g_free (value); g_free (value);
} }
static GtkCssValue * static GtkCssValue *
gtk_css_value_line_height_compute (GtkCssValue *value, gtk_css_value_line_height_compute (GtkCssValue *value,
guint property_id, guint property_id,
GtkCssComputeContext *context) GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssVariableSet *variables)
{ {
GtkCssValue *height; GtkCssValue *height;
height = gtk_css_value_compute (value->height, property_id, context); height = _gtk_css_value_compute (value->height, property_id, provider, style, parent_style, variables);
if (gtk_css_number_value_get_dimension (height) == GTK_CSS_DIMENSION_PERCENTAGE) if (gtk_css_number_value_get_dimension (height) == GTK_CSS_DIMENSION_PERCENTAGE)
{ {
double factor; double factor;
GtkCssValue *computed; GtkCssValue *computed;
factor = gtk_css_number_value_get (height, 1); factor = _gtk_css_number_value_get (height, 1);
computed = gtk_css_number_value_multiply (context->style->core->font_size, factor); computed = gtk_css_number_value_multiply (style->core->font_size, factor);
gtk_css_value_unref (height); _gtk_css_value_unref (height);
return computed; return computed;
} }
@@ -72,7 +75,7 @@ gtk_css_value_line_height_equal (const GtkCssValue *value1,
if (value1->height == NULL || value2->height == NULL) if (value1->height == NULL || value2->height == NULL)
return FALSE; return FALSE;
return gtk_css_value_equal (value1->height, value2->height); return _gtk_css_value_equal (value1->height, value2->height);
} }
static GtkCssValue * static GtkCssValue *
@@ -86,7 +89,7 @@ gtk_css_value_line_height_transition (GtkCssValue *start,
if (start->height == NULL || end->height == NULL) if (start->height == NULL || end->height == NULL)
return NULL; return NULL;
height = gtk_css_value_transition (start->height, end->height, property_id, progress); height = _gtk_css_value_transition (start->height, end->height, property_id, progress);
if (height == NULL) if (height == NULL)
return NULL; return NULL;
@@ -100,7 +103,7 @@ gtk_css_value_line_height_print (const GtkCssValue *value,
if (value->height == NULL) if (value->height == NULL)
g_string_append (string, "normal"); g_string_append (string, "normal");
else else
gtk_css_value_print (value->height, string); _gtk_css_value_print (value->height, string);
} }
static const GtkCssValueClass GTK_CSS_VALUE_LINE_HEIGHT = { static const GtkCssValueClass GTK_CSS_VALUE_LINE_HEIGHT = {
@@ -119,7 +122,7 @@ gtk_css_value_line_height_new_empty (void)
{ {
GtkCssValue *result; GtkCssValue *result;
result = gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_LINE_HEIGHT); result = _gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_LINE_HEIGHT);
result->height = NULL; result->height = NULL;
result->is_computed = TRUE; result->is_computed = TRUE;
@@ -131,7 +134,7 @@ gtk_css_value_line_height_new (GtkCssValue *height)
{ {
GtkCssValue *result; GtkCssValue *result;
result = gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_LINE_HEIGHT); result = _gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_LINE_HEIGHT);
result->height = height; result->height = height;
return result; return result;
@@ -152,12 +155,12 @@ gtk_css_line_height_value_parse (GtkCssParser *parser)
GtkCssValue *height; GtkCssValue *height;
if (gtk_css_parser_try_ident (parser, "normal")) if (gtk_css_parser_try_ident (parser, "normal"))
return gtk_css_value_ref (gtk_css_line_height_value_get_default ()); return _gtk_css_value_ref (gtk_css_line_height_value_get_default ());
height = gtk_css_number_value_parse (parser, GTK_CSS_PARSE_NUMBER | height = _gtk_css_number_value_parse (parser, GTK_CSS_PARSE_NUMBER |
GTK_CSS_PARSE_PERCENT | GTK_CSS_PARSE_PERCENT |
GTK_CSS_PARSE_LENGTH | GTK_CSS_PARSE_LENGTH |
GTK_CSS_POSITIVE_ONLY); GTK_CSS_POSITIVE_ONLY);
if (!height) if (!height)
return NULL; return NULL;
@@ -170,5 +173,5 @@ gtk_css_line_height_value_get (const GtkCssValue *value)
if (value->class == &GTK_CSS_VALUE_LINE_HEIGHT) if (value->class == &GTK_CSS_VALUE_LINE_HEIGHT)
return 0.0; return 0.0;
return gtk_css_number_value_get (value, 1); return _gtk_css_number_value_get (value, 1);
} }
+265 -1317
View File
File diff suppressed because it is too large Load Diff
+3 -19
View File
@@ -36,15 +36,13 @@ typedef enum /*< skip >*/ {
GTK_CSS_PARSE_TIME = (1 << 5) GTK_CSS_PARSE_TIME = (1 << 5)
} GtkCssNumberParseFlags; } GtkCssNumberParseFlags;
#define GTK_CSS_PARSE_DIMENSION (GTK_CSS_PARSE_LENGTH|GTK_CSS_PARSE_ANGLE|GTK_CSS_PARSE_TIME)
GtkCssValue * gtk_css_dimension_value_new (double value, GtkCssValue * gtk_css_dimension_value_new (double value,
GtkCssUnit unit); GtkCssUnit unit);
GtkCssValue * gtk_css_number_value_new (double value, GtkCssValue * _gtk_css_number_value_new (double value,
GtkCssUnit unit); GtkCssUnit unit);
gboolean gtk_css_number_value_can_parse (GtkCssParser *parser); gboolean gtk_css_number_value_can_parse (GtkCssParser *parser);
GtkCssValue * gtk_css_number_value_parse (GtkCssParser *parser, GtkCssValue * _gtk_css_number_value_parse (GtkCssParser *parser,
GtkCssNumberParseFlags flags); GtkCssNumberParseFlags flags);
GtkCssDimension gtk_css_number_value_get_dimension (const GtkCssValue *value) G_GNUC_PURE; GtkCssDimension gtk_css_number_value_get_dimension (const GtkCssValue *value) G_GNUC_PURE;
@@ -55,24 +53,10 @@ GtkCssValue * gtk_css_number_value_add (GtkCssValue *val
GtkCssValue *value2); GtkCssValue *value2);
GtkCssValue * gtk_css_number_value_try_add (GtkCssValue *value1, GtkCssValue * gtk_css_number_value_try_add (GtkCssValue *value1,
GtkCssValue *value2); GtkCssValue *value2);
double gtk_css_number_value_get (const GtkCssValue *number, double _gtk_css_number_value_get (const GtkCssValue *number,
double one_hundred_percent) G_GNUC_PURE;
double gtk_css_number_value_get_canonical (GtkCssValue *number,
double one_hundred_percent) G_GNUC_PURE; double one_hundred_percent) G_GNUC_PURE;
gboolean gtk_css_dimension_value_is_zero (const GtkCssValue *value) G_GNUC_PURE; gboolean gtk_css_dimension_value_is_zero (const GtkCssValue *value) G_GNUC_PURE;
enum {
ROUND_NEAREST,
ROUND_UP,
ROUND_DOWN,
ROUND_TO_ZERO,
};
GtkCssValue * gtk_css_math_value_new (guint type,
guint mode,
GtkCssValue **values,
guint n_values);
G_END_DECLS G_END_DECLS
+24 -21
View File
@@ -94,7 +94,7 @@ gtk_css_value_palette_free (GtkCssValue *value)
for (i = 0; i < value->n_colors; i ++) for (i = 0; i < value->n_colors; i ++)
{ {
g_free (value->color_names[i]); g_free (value->color_names[i]);
gtk_css_value_unref (value->color_values[i]); _gtk_css_value_unref (value->color_values[i]);
} }
g_free (value->color_names); g_free (value->color_names);
@@ -103,9 +103,12 @@ gtk_css_value_palette_free (GtkCssValue *value)
} }
static GtkCssValue * static GtkCssValue *
gtk_css_value_palette_compute (GtkCssValue *specified, gtk_css_value_palette_compute (GtkCssValue *specified,
guint property_id, guint property_id,
GtkCssComputeContext *context) GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssVariableSet *variables)
{ {
GtkCssValue *computed_color; GtkCssValue *computed_color;
GtkCssValue *result; GtkCssValue *result;
@@ -118,7 +121,7 @@ gtk_css_value_palette_compute (GtkCssValue *specified,
{ {
GtkCssValue *value = specified->color_values[i]; GtkCssValue *value = specified->color_values[i];
computed_color = gtk_css_value_compute (value, property_id, context); computed_color = _gtk_css_value_compute (value, property_id, provider, style, parent_style, variables);
result->color_names[i] = g_strdup (specified->color_names[i]); result->color_names[i] = g_strdup (specified->color_names[i]);
result->color_values[i] = computed_color; result->color_values[i] = computed_color;
@@ -127,8 +130,8 @@ gtk_css_value_palette_compute (GtkCssValue *specified,
if (!changes) if (!changes)
{ {
gtk_css_value_unref (result); _gtk_css_value_unref (result);
result = gtk_css_value_ref (specified); result = _gtk_css_value_ref (specified);
} }
return result; return result;
@@ -148,7 +151,7 @@ gtk_css_value_palette_equal (const GtkCssValue *value1,
if (strcmp (value1->color_names[i], value2->color_names[i]) != 0) if (strcmp (value1->color_names[i], value2->color_names[i]) != 0)
return FALSE; return FALSE;
if (!gtk_css_value_equal (value1->color_values[i], value2->color_values[i])) if (!_gtk_css_value_equal (value1->color_values[i], value2->color_values[i]))
return FALSE; return FALSE;
} }
@@ -184,9 +187,9 @@ gtk_css_value_palette_transition (GtkCssValue *start,
end_color = gtk_css_palette_value_find_color (end, name); end_color = gtk_css_palette_value_find_color (end, name);
if (end_color == NULL) if (end_color == NULL)
transition = gtk_css_value_ref (start_color); transition = _gtk_css_value_ref (start_color);
else else
transition = gtk_css_value_transition (start_color, end_color, property_id, progress); transition = _gtk_css_value_transition (start_color, end_color, property_id, progress);
g_ptr_array_add (new_names, g_strdup (name)); g_ptr_array_add (new_names, g_strdup (name));
g_ptr_array_add (new_values, transition); g_ptr_array_add (new_values, transition);
@@ -202,7 +205,7 @@ gtk_css_value_palette_transition (GtkCssValue *start,
continue; continue;
g_ptr_array_add (new_names, g_strdup (name)); g_ptr_array_add (new_names, g_strdup (name));
g_ptr_array_add (new_values, gtk_css_value_ref (end_color)); g_ptr_array_add (new_values, _gtk_css_value_ref (end_color));
} }
result->n_colors = new_names->len; result->n_colors = new_names->len;
@@ -235,7 +238,7 @@ gtk_css_value_palette_print (const GtkCssValue *value,
g_string_append (string, value->color_names[i]); g_string_append (string, value->color_names[i]);
g_string_append_c (string, ' '); g_string_append_c (string, ' ');
gtk_css_value_print (value->color_values[i], string); _gtk_css_value_print (value->color_values[i], string);
} }
} }
@@ -255,7 +258,7 @@ gtk_css_palette_value_new_empty (void)
{ {
GtkCssValue *result; GtkCssValue *result;
result = gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_PALETTE); result = _gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_PALETTE);
return result; return result;
} }
@@ -265,7 +268,7 @@ gtk_css_palette_value_new_sized (guint size)
{ {
GtkCssValue *result; GtkCssValue *result;
result = gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_PALETTE); result = _gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_PALETTE);
result->n_colors = size; result->n_colors = size;
result->color_names = g_malloc (sizeof (char *) * size); result->color_names = g_malloc (sizeof (char *) * size);
result->color_values = g_malloc (sizeof (GtkCssValue *) * size); result->color_values = g_malloc (sizeof (GtkCssValue *) * size);
@@ -280,15 +283,15 @@ gtk_css_palette_value_new_default (void)
{ {
default_palette = gtk_css_palette_value_new_sized (3); default_palette = gtk_css_palette_value_new_sized (3);
gtk_css_palette_value_set_color (default_palette, 0, g_strdup ("error"), gtk_css_palette_value_set_color (default_palette, 0, g_strdup ("error"),
gtk_css_color_value_new_name ("error_color")); _gtk_css_color_value_new_name ("error_color"));
gtk_css_palette_value_set_color (default_palette, 1, g_strdup ("success"), gtk_css_palette_value_set_color (default_palette, 1, g_strdup ("success"),
gtk_css_color_value_new_name ("success_color")); _gtk_css_color_value_new_name ("success_color"));
gtk_css_palette_value_set_color (default_palette, 2, g_strdup ("warning"), gtk_css_palette_value_set_color (default_palette, 2, g_strdup ("warning"),
gtk_css_color_value_new_name ("warning_color")); _gtk_css_color_value_new_name ("warning_color"));
/* Above is already sorted */ /* Above is already sorted */
} }
return gtk_css_value_ref (default_palette); return _gtk_css_value_ref (default_palette);
} }
GtkCssValue * GtkCssValue *
@@ -310,15 +313,15 @@ gtk_css_palette_value_parse (GtkCssParser *parser)
ident = gtk_css_parser_consume_ident (parser); ident = gtk_css_parser_consume_ident (parser);
if (ident == NULL) if (ident == NULL)
{ {
gtk_css_value_unref (result); _gtk_css_value_unref (result);
return NULL; return NULL;
} }
color = gtk_css_color_value_parse (parser); color = _gtk_css_color_value_parse (parser);
if (color == NULL) if (color == NULL)
{ {
g_free (ident); g_free (ident);
gtk_css_value_unref (result); _gtk_css_value_unref (result);
return NULL; return NULL;
} }
+53 -50
View File
@@ -30,25 +30,28 @@ struct _GtkCssValue {
static void static void
gtk_css_value_position_free (GtkCssValue *value) gtk_css_value_position_free (GtkCssValue *value)
{ {
gtk_css_value_unref (value->x); _gtk_css_value_unref (value->x);
gtk_css_value_unref (value->y); _gtk_css_value_unref (value->y);
g_free (value); g_free (value);
} }
static GtkCssValue * static GtkCssValue *
gtk_css_value_position_compute (GtkCssValue *position, gtk_css_value_position_compute (GtkCssValue *position,
guint property_id, guint property_id,
GtkCssComputeContext *context) GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssVariableSet *variables)
{ {
GtkCssValue *x, *y; GtkCssValue *x, *y;
x = gtk_css_value_compute (position->x, property_id, context); x = _gtk_css_value_compute (position->x, property_id, provider, style, parent_style, variables);
y = gtk_css_value_compute (position->y, property_id, context); y = _gtk_css_value_compute (position->y, property_id, provider, style, parent_style, variables);
if (x == position->x && y == position->y) if (x == position->x && y == position->y)
{ {
gtk_css_value_unref (x); _gtk_css_value_unref (x);
gtk_css_value_unref (y); _gtk_css_value_unref (y);
return gtk_css_value_ref (position); return _gtk_css_value_ref (position);
} }
return _gtk_css_position_value_new (x, y); return _gtk_css_position_value_new (x, y);
@@ -58,8 +61,8 @@ static gboolean
gtk_css_value_position_equal (const GtkCssValue *position1, gtk_css_value_position_equal (const GtkCssValue *position1,
const GtkCssValue *position2) const GtkCssValue *position2)
{ {
return gtk_css_value_equal (position1->x, position2->x) return _gtk_css_value_equal (position1->x, position2->x)
&& gtk_css_value_equal (position1->y, position2->y); && _gtk_css_value_equal (position1->y, position2->y);
} }
static GtkCssValue * static GtkCssValue *
@@ -70,13 +73,13 @@ gtk_css_value_position_transition (GtkCssValue *start,
{ {
GtkCssValue *x, *y; GtkCssValue *x, *y;
x = gtk_css_value_transition (start->x, end->x, property_id, progress); x = _gtk_css_value_transition (start->x, end->x, property_id, progress);
if (x == NULL) if (x == NULL)
return NULL; return NULL;
y = gtk_css_value_transition (start->y, end->y, property_id, progress); y = _gtk_css_value_transition (start->y, end->y, property_id, progress);
if (y == NULL) if (y == NULL)
{ {
gtk_css_value_unref (x); _gtk_css_value_unref (x);
return NULL; return NULL;
} }
@@ -92,15 +95,15 @@ gtk_css_value_position_print (const GtkCssValue *position,
const char *y_name; const char *y_name;
GtkCssValue *number; GtkCssValue *number;
} values[] = { } values[] = {
{ "left", "top", gtk_css_number_value_new (0, GTK_CSS_PERCENT) }, { "left", "top", _gtk_css_number_value_new (0, GTK_CSS_PERCENT) },
{ "right", "bottom", gtk_css_number_value_new (100, GTK_CSS_PERCENT) } { "right", "bottom", _gtk_css_number_value_new (100, GTK_CSS_PERCENT) }
}; };
GtkCssValue *center = gtk_css_number_value_new (50, GTK_CSS_PERCENT); GtkCssValue *center = _gtk_css_number_value_new (50, GTK_CSS_PERCENT);
guint i; guint i;
if (gtk_css_value_equal (position->x, center)) if (_gtk_css_value_equal (position->x, center))
{ {
if (gtk_css_value_equal (position->y, center)) if (_gtk_css_value_equal (position->y, center))
{ {
g_string_append (string, "center"); g_string_append (string, "center");
goto done; goto done;
@@ -110,16 +113,16 @@ gtk_css_value_position_print (const GtkCssValue *position,
{ {
for (i = 0; i < G_N_ELEMENTS (values); i++) for (i = 0; i < G_N_ELEMENTS (values); i++)
{ {
if (gtk_css_value_equal (position->x, values[i].number)) if (_gtk_css_value_equal (position->x, values[i].number))
{ {
g_string_append (string, values[i].x_name); g_string_append (string, values[i].x_name);
break; break;
} }
} }
if (i == G_N_ELEMENTS (values)) if (i == G_N_ELEMENTS (values))
gtk_css_value_print (position->x, string); _gtk_css_value_print (position->x, string);
if (gtk_css_value_equal (position->y, center)) if (_gtk_css_value_equal (position->y, center))
goto done; goto done;
g_string_append_c (string, ' '); g_string_append_c (string, ' ');
@@ -127,7 +130,7 @@ gtk_css_value_position_print (const GtkCssValue *position,
for (i = 0; i < G_N_ELEMENTS (values); i++) for (i = 0; i < G_N_ELEMENTS (values); i++)
{ {
if (gtk_css_value_equal (position->y, values[i].number)) if (_gtk_css_value_equal (position->y, values[i].number))
{ {
g_string_append (string, values[i].y_name); g_string_append (string, values[i].y_name);
goto done; goto done;
@@ -135,15 +138,15 @@ gtk_css_value_position_print (const GtkCssValue *position,
} }
if (i == G_N_ELEMENTS (values)) if (i == G_N_ELEMENTS (values))
{ {
if (gtk_css_value_equal (position->x, center)) if (_gtk_css_value_equal (position->x, center))
g_string_append (string, "center "); g_string_append (string, "center ");
gtk_css_value_print (position->y, string); _gtk_css_value_print (position->y, string);
} }
done: done:
for (i = 0; i < G_N_ELEMENTS (values); i++) for (i = 0; i < G_N_ELEMENTS (values); i++)
gtk_css_value_unref (values[i].number); _gtk_css_value_unref (values[i].number);
gtk_css_value_unref (center); _gtk_css_value_unref (center);
} }
static const GtkCssValueClass GTK_CSS_VALUE_POSITION = { static const GtkCssValueClass GTK_CSS_VALUE_POSITION = {
@@ -163,7 +166,7 @@ _gtk_css_position_value_new (GtkCssValue *x,
{ {
GtkCssValue *result; GtkCssValue *result;
result = gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_POSITION); result = _gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_POSITION);
result->x = x; result->x = x;
result->y = y; result->y = y;
result->is_computed = gtk_css_value_is_computed (x) && result->is_computed = gtk_css_value_is_computed (x) &&
@@ -196,9 +199,9 @@ position_value_parse (GtkCssParser *parser, gboolean try)
if (gtk_css_parser_try_ident (parser, names[i].name)) if (gtk_css_parser_try_ident (parser, names[i].name))
{ {
if (names[i].horizontal) if (names[i].horizontal)
x = gtk_css_number_value_new (names[i].percentage, GTK_CSS_PERCENT); x = _gtk_css_number_value_new (names[i].percentage, GTK_CSS_PERCENT);
else else
y = gtk_css_number_value_new (names[i].percentage, GTK_CSS_PERCENT); y = _gtk_css_number_value_new (names[i].percentage, GTK_CSS_PERCENT);
swap = names[i].swap; swap = names[i].swap;
break; break;
} }
@@ -207,9 +210,9 @@ position_value_parse (GtkCssParser *parser, gboolean try)
{ {
if (gtk_css_number_value_can_parse (parser)) if (gtk_css_number_value_can_parse (parser))
{ {
x = gtk_css_number_value_parse (parser, x = _gtk_css_number_value_parse (parser,
GTK_CSS_PARSE_PERCENT GTK_CSS_PARSE_PERCENT
| GTK_CSS_PARSE_LENGTH); | GTK_CSS_PARSE_LENGTH);
if (x == NULL) if (x == NULL)
return NULL; return NULL;
@@ -239,17 +242,17 @@ position_value_parse (GtkCssParser *parser, gboolean try)
if (names[i].horizontal && !names[i].swap) if (names[i].horizontal && !names[i].swap)
{ {
y = x; y = x;
x = gtk_css_number_value_new (names[i].percentage, GTK_CSS_PERCENT); x = _gtk_css_number_value_new (names[i].percentage, GTK_CSS_PERCENT);
} }
else else
{ {
y = gtk_css_number_value_new (names[i].percentage, GTK_CSS_PERCENT); y = _gtk_css_number_value_new (names[i].percentage, GTK_CSS_PERCENT);
} }
} }
else else
{ {
g_assert (names[i].horizontal || names[i].swap); g_assert (names[i].horizontal || names[i].swap);
x = gtk_css_number_value_new (names[i].percentage, GTK_CSS_PERCENT); x = _gtk_css_number_value_new (names[i].percentage, GTK_CSS_PERCENT);
} }
break; break;
} }
@@ -263,24 +266,24 @@ position_value_parse (GtkCssParser *parser, gboolean try)
{ {
if (!try) if (!try)
gtk_css_parser_error_syntax (parser, "Invalid combination of values"); gtk_css_parser_error_syntax (parser, "Invalid combination of values");
gtk_css_value_unref (y); _gtk_css_value_unref (y);
return NULL; return NULL;
} }
y = gtk_css_number_value_parse (parser, y = _gtk_css_number_value_parse (parser,
GTK_CSS_PARSE_PERCENT GTK_CSS_PARSE_PERCENT
| GTK_CSS_PARSE_LENGTH); | GTK_CSS_PARSE_LENGTH);
if (y == NULL) if (y == NULL)
{ {
gtk_css_value_unref (x); _gtk_css_value_unref (x);
return NULL; return NULL;
} }
} }
else else
{ {
if (y) if (y)
x = gtk_css_number_value_new (50, GTK_CSS_PERCENT); x = _gtk_css_number_value_new (50, GTK_CSS_PERCENT);
else else
y = gtk_css_number_value_new (50, GTK_CSS_PERCENT); y = _gtk_css_number_value_new (50, GTK_CSS_PERCENT);
} }
} }
@@ -304,22 +307,22 @@ gtk_css_position_value_parse_spacing (GtkCssParser *parser)
{ {
GtkCssValue *x, *y; GtkCssValue *x, *y;
x = gtk_css_number_value_parse (parser, GTK_CSS_PARSE_LENGTH | GTK_CSS_POSITIVE_ONLY); x = _gtk_css_number_value_parse (parser, GTK_CSS_PARSE_LENGTH | GTK_CSS_POSITIVE_ONLY);
if (x == NULL) if (x == NULL)
return NULL; return NULL;
if (gtk_css_number_value_can_parse (parser)) if (gtk_css_number_value_can_parse (parser))
{ {
y = gtk_css_number_value_parse (parser, GTK_CSS_PARSE_LENGTH | GTK_CSS_POSITIVE_ONLY); y = _gtk_css_number_value_parse (parser, GTK_CSS_PARSE_LENGTH | GTK_CSS_POSITIVE_ONLY);
if (y == NULL) if (y == NULL)
{ {
gtk_css_value_unref (x); _gtk_css_value_unref (x);
return NULL; return NULL;
} }
} }
else else
{ {
y = gtk_css_value_ref (x); y = _gtk_css_value_ref (x);
} }
return _gtk_css_position_value_new (x, y); return _gtk_css_position_value_new (x, y);
@@ -332,7 +335,7 @@ _gtk_css_position_value_get_x (const GtkCssValue *position,
g_return_val_if_fail (position != NULL, 0.0); g_return_val_if_fail (position != NULL, 0.0);
g_return_val_if_fail (position->class == &GTK_CSS_VALUE_POSITION, 0.0); g_return_val_if_fail (position->class == &GTK_CSS_VALUE_POSITION, 0.0);
return gtk_css_number_value_get (position->x, one_hundred_percent); return _gtk_css_number_value_get (position->x, one_hundred_percent);
} }
double double
@@ -342,6 +345,6 @@ _gtk_css_position_value_get_y (const GtkCssValue *position,
g_return_val_if_fail (position != NULL, 0.0); g_return_val_if_fail (position != NULL, 0.0);
g_return_val_if_fail (position->class == &GTK_CSS_VALUE_POSITION, 0.0); g_return_val_if_fail (position->class == &GTK_CSS_VALUE_POSITION, 0.0);
return gtk_css_number_value_get (position->y, one_hundred_percent); return _gtk_css_number_value_get (position->y, one_hundred_percent);
} }
+14 -16
View File
@@ -184,12 +184,10 @@ gtk_css_provider_parsing_error (GtkCssProvider *provider,
{ {
char *s = gtk_css_section_to_string (section); char *s = gtk_css_section_to_string (section);
if (GTK_DEBUG_CHECK (CSS) || g_warning ("Theme parser %s: %s: %s",
!g_error_matches (error, GTK_CSS_PARSER_WARNING, GTK_CSS_PARSER_WARNING_DEPRECATED)) error->domain == GTK_CSS_PARSER_WARNING ? "warning" : "error",
g_warning ("Theme parser %s: %s: %s", s,
error->domain == GTK_CSS_PARSER_WARNING ? "warning" : "error", error->message);
s,
error->message);
g_free (s); g_free (s);
} }
@@ -271,7 +269,7 @@ gtk_css_ruleset_clear (GtkCssRuleset *ruleset)
for (i = 0; i < ruleset->n_styles; i++) for (i = 0; i < ruleset->n_styles; i++)
{ {
gtk_css_value_unref (ruleset->styles[i].value); _gtk_css_value_unref (ruleset->styles[i].value);
ruleset->styles[i].value = NULL; ruleset->styles[i].value = NULL;
if (ruleset->styles[i].section) if (ruleset->styles[i].section)
gtk_css_section_unref (ruleset->styles[i].section); gtk_css_section_unref (ruleset->styles[i].section);
@@ -302,7 +300,7 @@ gtk_css_ruleset_add (GtkCssRuleset *ruleset,
{ {
if (ruleset->styles[i].property == property) if (ruleset->styles[i].property == property)
{ {
gtk_css_value_unref (ruleset->styles[i].value); _gtk_css_value_unref (ruleset->styles[i].value);
ruleset->styles[i].value = NULL; ruleset->styles[i].value = NULL;
if (ruleset->styles[i].section) if (ruleset->styles[i].section)
gtk_css_section_unref (ruleset->styles[i].section); gtk_css_section_unref (ruleset->styles[i].section);
@@ -442,7 +440,7 @@ gtk_css_provider_init (GtkCssProvider *css_provider)
priv->symbolic_colors = g_hash_table_new_full (g_str_hash, g_str_equal, priv->symbolic_colors = g_hash_table_new_full (g_str_hash, g_str_equal,
(GDestroyNotify) g_free, (GDestroyNotify) g_free,
(GDestroyNotify) gtk_css_value_unref); (GDestroyNotify) _gtk_css_value_unref);
priv->keyframes = g_hash_table_new_full (g_str_hash, g_str_equal, priv->keyframes = g_hash_table_new_full (g_str_hash, g_str_equal,
(GDestroyNotify) g_free, (GDestroyNotify) g_free,
(GDestroyNotify) _gtk_css_keyframes_unref); (GDestroyNotify) _gtk_css_keyframes_unref);
@@ -770,7 +768,7 @@ parse_color_definition (GtkCssScanner *scanner)
if (name == NULL) if (name == NULL)
return TRUE; return TRUE;
color = gtk_css_color_value_parse (scanner->parser); color = _gtk_css_color_value_parse (scanner->parser);
if (color == NULL) if (color == NULL)
{ {
g_free (name); g_free (name);
@@ -780,7 +778,7 @@ parse_color_definition (GtkCssScanner *scanner)
if (!gtk_css_parser_has_token (scanner->parser, GTK_CSS_TOKEN_EOF)) if (!gtk_css_parser_has_token (scanner->parser, GTK_CSS_TOKEN_EOF))
{ {
g_free (name); g_free (name);
gtk_css_value_unref (color); _gtk_css_value_unref (color);
gtk_css_parser_error_syntax (scanner->parser, gtk_css_parser_error_syntax (scanner->parser,
"Missing semicolon at end of color definition"); "Missing semicolon at end of color definition");
return TRUE; return TRUE;
@@ -1032,10 +1030,10 @@ parse_declaration (GtkCssScanner *scanner,
GtkCssStyleProperty *child = _gtk_css_shorthand_property_get_subproperty (shorthand, i); GtkCssStyleProperty *child = _gtk_css_shorthand_property_get_subproperty (shorthand, i);
GtkCssValue *sub = _gtk_css_array_value_get_nth (value, i); GtkCssValue *sub = _gtk_css_array_value_get_nth (value, i);
gtk_css_ruleset_add (ruleset, child, gtk_css_value_ref (sub), section); gtk_css_ruleset_add (ruleset, child, _gtk_css_value_ref (sub), section);
} }
gtk_css_value_unref (value); _gtk_css_value_unref (value);
} }
else if (GTK_IS_CSS_STYLE_PROPERTY (property)) else if (GTK_IS_CSS_STYLE_PROPERTY (property))
{ {
@@ -1045,7 +1043,7 @@ parse_declaration (GtkCssScanner *scanner,
else else
{ {
g_assert_not_reached (); g_assert_not_reached ();
gtk_css_value_unref (value); _gtk_css_value_unref (value);
} }
g_clear_pointer (&section, gtk_css_section_unref); g_clear_pointer (&section, gtk_css_section_unref);
@@ -1691,7 +1689,7 @@ gtk_css_ruleset_print (const GtkCssRuleset *ruleset,
g_string_append (str, " "); g_string_append (str, " ");
g_string_append (str, _gtk_style_property_get_name (GTK_STYLE_PROPERTY (prop->property))); g_string_append (str, _gtk_style_property_get_name (GTK_STYLE_PROPERTY (prop->property)));
g_string_append (str, ": "); g_string_append (str, ": ");
gtk_css_value_print (prop->value, str); _gtk_css_value_print (prop->value, str);
g_string_append (str, ";\n"); g_string_append (str, ";\n");
} }
@@ -1744,7 +1742,7 @@ gtk_css_provider_print_colors (GHashTable *colors,
g_string_append (str, "@define-color "); g_string_append (str, "@define-color ");
g_string_append (str, name); g_string_append (str, name);
g_string_append (str, " "); g_string_append (str, " ");
gtk_css_value_print (color, str); _gtk_css_value_print (color, str);
g_string_append (str, ";\n"); g_string_append (str, ";\n");
} }
+18 -41
View File
@@ -220,8 +220,6 @@ parser_error (GtkCssParser *parser,
{ {
for (int i = 0; i < n_vars; i++) for (int i = 0; i < n_vars; i++)
{ {
GtkCssSection *section;
if (names[i + 1]) if (names[i + 1])
g_set_error (&new_error, g_set_error (&new_error,
GTK_CSS_PARSER_ERROR, GTK_CSS_PARSER_ERROR_UNKNOWN_VALUE, GTK_CSS_PARSER_ERROR, GTK_CSS_PARSER_ERROR_UNKNOWN_VALUE,
@@ -230,15 +228,7 @@ parser_error (GtkCssParser *parser,
g_set_error_literal (&new_error, g_set_error_literal (&new_error,
GTK_CSS_PARSER_ERROR, GTK_CSS_PARSER_ERROR_UNKNOWN_VALUE, GTK_CSS_PARSER_ERROR, GTK_CSS_PARSER_ERROR_UNKNOWN_VALUE,
error->message); error->message);
gtk_style_provider_emit_error (provider, vars[i]->section, new_error);
if (vars[i]->section == NULL)
section = gtk_css_section_new (gtk_css_parser_get_file (parser), start, end);
else
section = gtk_css_section_ref (vars[i]->section);
gtk_style_provider_emit_error (provider, section, new_error);
gtk_css_section_unref (section);
g_clear_error (&new_error); g_clear_error (&new_error);
} }
@@ -255,27 +245,19 @@ parser_error (GtkCssParser *parser,
} }
static GtkCssValue * static GtkCssValue *
gtk_css_value_reference_compute (GtkCssValue *value, gtk_css_value_reference_compute (GtkCssValue *value,
guint property_id, guint property_id,
GtkCssComputeContext *context) GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssVariableSet *variables)
{ {
GtkCssValue *result = NULL, *computed; GtkCssValue *result = NULL, *computed;
GtkCssRefs refs; GtkCssRefs refs;
guint shorthand_id = G_MAXUINT;
if (GTK_IS_CSS_SHORTHAND_PROPERTY (value->property))
{
shorthand_id = _gtk_css_shorthand_property_get_id (GTK_CSS_SHORTHAND_PROPERTY (value->property));
if (context->shorthands && context->shorthands[shorthand_id])
{
result = gtk_css_value_ref (context->shorthands[shorthand_id]);
goto pick_subproperty;
}
}
gtk_css_refs_init (&refs); gtk_css_refs_init (&refs);
resolve_references (value->value, property_id, context->style, context->variables, &refs); resolve_references (value->value, property_id, style, variables, &refs);
if (gtk_css_refs_get_size (&refs) > 0) if (gtk_css_refs_get_size (&refs) > 0)
{ {
@@ -286,8 +268,7 @@ gtk_css_value_reference_compute (GtkCssValue *value,
value->file, value->file,
(GtkCssVariableValue **) refs.start, (GtkCssVariableValue **) refs.start,
gtk_css_refs_get_size (&refs), gtk_css_refs_get_size (&refs),
parser_error, context->provider, parser_error, provider, NULL);
NULL);
result = _gtk_style_property_parse_value (value->property, value_parser); result = _gtk_style_property_parse_value (value->property, value_parser);
token = gtk_css_parser_peek_token (value_parser); token = gtk_css_parser_peek_token (value_parser);
@@ -311,23 +292,19 @@ gtk_css_value_reference_compute (GtkCssValue *value,
if (result == NULL) if (result == NULL)
result = _gtk_css_unset_value_new (); result = _gtk_css_unset_value_new ();
if (shorthand_id != G_MAXUINT) if (GTK_IS_CSS_SHORTHAND_PROPERTY (value->property))
{ {
GtkCssValue *sub; GtkCssValue *sub = gtk_css_value_ref (_gtk_css_array_value_get_nth (result, value->subproperty));
if (context->shorthands)
{
g_assert (context->shorthands[shorthand_id] == NULL);
context->shorthands[shorthand_id] = gtk_css_value_ref (result);
}
pick_subproperty:
sub = gtk_css_value_ref (_gtk_css_array_value_get_nth (result, value->subproperty));
gtk_css_value_unref (result); gtk_css_value_unref (result);
result = sub; result = sub;
} }
computed = gtk_css_value_compute (result, property_id, context); computed = _gtk_css_value_compute (result,
property_id,
provider,
style,
parent_style,
variables);
computed->is_computed = TRUE; computed->is_computed = TRUE;
gtk_css_value_unref (result); gtk_css_value_unref (result);
@@ -376,7 +353,7 @@ _gtk_css_reference_value_new (GtkStyleProperty *property,
{ {
GtkCssValue *result; GtkCssValue *result;
result = gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_REFERENCE); result = _gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_REFERENCE);
result->property = property; result->property = property;
result->value = gtk_css_variable_value_ref (value); result->value = gtk_css_variable_value_ref (value);
result->contains_variables = TRUE; result->contains_variables = TRUE;
+9 -6
View File
@@ -34,11 +34,14 @@ gtk_css_value_repeat_free (GtkCssValue *value)
} }
static GtkCssValue * static GtkCssValue *
gtk_css_value_repeat_compute (GtkCssValue *value, gtk_css_value_repeat_compute (GtkCssValue *value,
guint property_id, guint property_id,
GtkCssComputeContext *context) GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssVariableSet *variables)
{ {
return gtk_css_value_ref (value); return _gtk_css_value_ref (value);
} }
static gboolean static gboolean
@@ -167,7 +170,7 @@ GtkCssValue *
_gtk_css_background_repeat_value_new (GtkCssRepeatStyle x, _gtk_css_background_repeat_value_new (GtkCssRepeatStyle x,
GtkCssRepeatStyle y) GtkCssRepeatStyle y)
{ {
return gtk_css_value_ref (&background_repeat_values[x].values[y]); return _gtk_css_value_ref (&background_repeat_values[x].values[y]);
} }
static gboolean static gboolean
@@ -261,7 +264,7 @@ GtkCssValue *
_gtk_css_border_repeat_value_new (GtkCssRepeatStyle x, _gtk_css_border_repeat_value_new (GtkCssRepeatStyle x,
GtkCssRepeatStyle y) GtkCssRepeatStyle y)
{ {
return gtk_css_value_ref (&border_repeat_values[x].values[y]); return _gtk_css_value_ref (&border_repeat_values[x].values[y]);
} }
static gboolean static gboolean
+72 -69
View File
@@ -59,21 +59,21 @@ shadow_value_for_transition (ShadowValue *result,
gboolean inset) gboolean inset)
{ {
result->inset = inset; result->inset = inset;
result->hoffset = gtk_css_number_value_new (0, GTK_CSS_PX); result->hoffset = _gtk_css_number_value_new (0, GTK_CSS_PX);
result->voffset = gtk_css_number_value_new (0, GTK_CSS_PX); result->voffset = _gtk_css_number_value_new (0, GTK_CSS_PX);
result->radius = gtk_css_number_value_new (0, GTK_CSS_PX); result->radius = _gtk_css_number_value_new (0, GTK_CSS_PX);
result->spread = gtk_css_number_value_new (0, GTK_CSS_PX); result->spread = _gtk_css_number_value_new (0, GTK_CSS_PX);
result->color = gtk_css_color_value_new_transparent (); result->color = gtk_css_color_value_new_transparent ();
} }
static void static void
shadow_value_unref (const ShadowValue *shadow) shadow_value_unref (const ShadowValue *shadow)
{ {
gtk_css_value_unref (shadow->hoffset); _gtk_css_value_unref (shadow->hoffset);
gtk_css_value_unref (shadow->voffset); _gtk_css_value_unref (shadow->voffset);
gtk_css_value_unref (shadow->spread); _gtk_css_value_unref (shadow->spread);
gtk_css_value_unref (shadow->radius); _gtk_css_value_unref (shadow->radius);
gtk_css_value_unref (shadow->color); _gtk_css_value_unref (shadow->color);
} }
static gboolean static gboolean
@@ -88,11 +88,11 @@ shadow_value_transition (const ShadowValue *start,
return FALSE; return FALSE;
result->inset = start->inset; result->inset = start->inset;
result->hoffset = gtk_css_value_transition (start->hoffset, end->hoffset, property_id, progress); result->hoffset = _gtk_css_value_transition (start->hoffset, end->hoffset, property_id, progress);
result->voffset = gtk_css_value_transition (start->voffset, end->voffset, property_id, progress); result->voffset = _gtk_css_value_transition (start->voffset, end->voffset, property_id, progress);
result->radius = gtk_css_value_transition (start->radius, end->radius, property_id, progress); result->radius = _gtk_css_value_transition (start->radius, end->radius, property_id, progress);
result->spread = gtk_css_value_transition (start->spread, end->spread, property_id, progress); result->spread = _gtk_css_value_transition (start->spread, end->spread, property_id, progress);
result->color = gtk_css_value_transition (start->color, end->color, property_id, progress); result->color = _gtk_css_value_transition (start->color, end->color, property_id, progress);
return TRUE; return TRUE;
} }
@@ -113,9 +113,12 @@ gtk_css_value_shadow_free (GtkCssValue *value)
} }
static GtkCssValue * static GtkCssValue *
gtk_css_value_shadow_compute (GtkCssValue *value, gtk_css_value_shadow_compute (GtkCssValue *value,
guint property_id, guint property_id,
GtkCssComputeContext *context) GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssVariableSet *variables)
{ {
guint i; guint i;
ShadowValue *shadows; ShadowValue *shadows;
@@ -126,11 +129,11 @@ gtk_css_value_shadow_compute (GtkCssValue *value,
{ {
const ShadowValue *shadow = &value->shadows[i]; const ShadowValue *shadow = &value->shadows[i];
shadows[i].hoffset = gtk_css_value_compute (shadow->hoffset, property_id, context); shadows[i].hoffset = _gtk_css_value_compute (shadow->hoffset, property_id, provider, style, parent_style, variables);
shadows[i].voffset = gtk_css_value_compute (shadow->voffset, property_id, context); shadows[i].voffset = _gtk_css_value_compute (shadow->voffset, property_id, provider, style, parent_style, variables);
shadows[i].radius = gtk_css_value_compute (shadow->radius, property_id, context); shadows[i].radius = _gtk_css_value_compute (shadow->radius, property_id, provider, style, parent_style, variables);
shadows[i].spread = gtk_css_value_compute (shadow->spread, property_id, context), shadows[i].spread = _gtk_css_value_compute (shadow->spread, property_id, provider, style, parent_style, variables),
shadows[i].color = gtk_css_value_compute (shadow->color, property_id, context); shadows[i].color = _gtk_css_value_compute (shadow->color, property_id, provider, style, parent_style, variables);
shadows[i].inset = shadow->inset; shadows[i].inset = shadow->inset;
} }
@@ -152,11 +155,11 @@ gtk_css_value_shadow_equal (const GtkCssValue *value1,
const ShadowValue *shadow2 = &value2->shadows[i]; const ShadowValue *shadow2 = &value2->shadows[i];
if (shadow1->inset != shadow2->inset || if (shadow1->inset != shadow2->inset ||
!gtk_css_value_equal (shadow1->hoffset, shadow2->hoffset) || !_gtk_css_value_equal (shadow1->hoffset, shadow2->hoffset) ||
!gtk_css_value_equal (shadow1->voffset, shadow2->voffset) || !_gtk_css_value_equal (shadow1->voffset, shadow2->voffset) ||
!gtk_css_value_equal (shadow1->radius, shadow2->radius) || !_gtk_css_value_equal (shadow1->radius, shadow2->radius) ||
!gtk_css_value_equal (shadow1->spread, shadow2->spread) || !_gtk_css_value_equal (shadow1->spread, shadow2->spread) ||
!gtk_css_value_equal (shadow1->color, shadow2->color)) !_gtk_css_value_equal (shadow1->color, shadow2->color))
return FALSE; return FALSE;
} }
@@ -250,24 +253,24 @@ gtk_css_value_shadow_print (const GtkCssValue *value,
if (i > 0) if (i > 0)
g_string_append (string, ", "); g_string_append (string, ", ");
gtk_css_value_print (shadow->hoffset, string); _gtk_css_value_print (shadow->hoffset, string);
g_string_append_c (string, ' '); g_string_append_c (string, ' ');
gtk_css_value_print (shadow->voffset, string); _gtk_css_value_print (shadow->voffset, string);
g_string_append_c (string, ' '); g_string_append_c (string, ' ');
if (gtk_css_number_value_get (shadow->radius, 100) != 0 || if (_gtk_css_number_value_get (shadow->radius, 100) != 0 ||
gtk_css_number_value_get (shadow->spread, 100) != 0) _gtk_css_number_value_get (shadow->spread, 100) != 0)
{ {
gtk_css_value_print (shadow->radius, string); _gtk_css_value_print (shadow->radius, string);
g_string_append_c (string, ' '); g_string_append_c (string, ' ');
} }
if (gtk_css_number_value_get (shadow->spread, 100) != 0) if (_gtk_css_number_value_get (shadow->spread, 100) != 0)
{ {
gtk_css_value_print (shadow->spread, string); _gtk_css_value_print (shadow->spread, string);
g_string_append_c (string, ' '); g_string_append_c (string, ' ');
} }
gtk_css_value_print (shadow->color, string); _gtk_css_value_print (shadow->color, string);
if (shadow->inset) if (shadow->inset)
g_string_append (string, " inset"); g_string_append (string, " inset");
@@ -290,7 +293,7 @@ static GtkCssValue shadow_none_singleton = { &GTK_CSS_VALUE_SHADOW, 1, TRUE, FAL
GtkCssValue * GtkCssValue *
gtk_css_shadow_value_new_none (void) gtk_css_shadow_value_new_none (void)
{ {
return gtk_css_value_ref (&shadow_none_singleton); return _gtk_css_value_ref (&shadow_none_singleton);
} }
static GtkCssValue * static GtkCssValue *
@@ -304,7 +307,7 @@ gtk_css_shadow_value_new (ShadowValue *shadows,
if (n_shadows == 0) if (n_shadows == 0)
return gtk_css_shadow_value_new_none (); return gtk_css_shadow_value_new_none ();
retval = gtk_css_value_alloc (&GTK_CSS_VALUE_SHADOW, sizeof (GtkCssValue) + sizeof (ShadowValue) * (n_shadows - 1)); retval = _gtk_css_value_alloc (&GTK_CSS_VALUE_SHADOW, sizeof (GtkCssValue) + sizeof (ShadowValue) * (n_shadows - 1));
retval->n_shadows = n_shadows; retval->n_shadows = n_shadows;
retval->is_filter = is_filter; retval->is_filter = is_filter;
@@ -335,10 +338,10 @@ gtk_css_shadow_value_new_filter (const GtkCssValue *other)
ShadowValue value; ShadowValue value;
value.inset = FALSE; value.inset = FALSE;
value.hoffset = gtk_css_number_value_new (0, GTK_CSS_PX); value.hoffset = _gtk_css_number_value_new (0, GTK_CSS_PX);
value.voffset = gtk_css_number_value_new (0, GTK_CSS_PX); value.voffset = _gtk_css_number_value_new (0, GTK_CSS_PX);
value.radius = gtk_css_number_value_new (0, GTK_CSS_PX); value.radius = _gtk_css_number_value_new (0, GTK_CSS_PX);
value.spread = gtk_css_number_value_new (0, GTK_CSS_PX); value.spread = _gtk_css_number_value_new (0, GTK_CSS_PX);
value.color = gtk_css_value_ref (other->shadows[0].color); value.color = gtk_css_value_ref (other->shadows[0].color);
return gtk_css_shadow_value_new (&value, 1, TRUE); return gtk_css_shadow_value_new (&value, 1, TRUE);
@@ -385,36 +388,36 @@ parse_lengths (GtkCssParser *parser,
{ {
GtkCssValue **values = option_data; GtkCssValue **values = option_data;
values[HOFFSET] = gtk_css_number_value_parse (parser, values[HOFFSET] = _gtk_css_number_value_parse (parser,
GTK_CSS_PARSE_LENGTH); GTK_CSS_PARSE_LENGTH);
if (values[HOFFSET] == NULL) if (values[HOFFSET] == NULL)
return FALSE; return FALSE;
values[VOFFSET] = gtk_css_number_value_parse (parser, values[VOFFSET] = _gtk_css_number_value_parse (parser,
GTK_CSS_PARSE_LENGTH); GTK_CSS_PARSE_LENGTH);
if (values[VOFFSET] == NULL) if (values[VOFFSET] == NULL)
return FALSE; return FALSE;
if (gtk_css_number_value_can_parse (parser)) if (gtk_css_number_value_can_parse (parser))
{ {
values[RADIUS] = gtk_css_number_value_parse (parser, values[RADIUS] = _gtk_css_number_value_parse (parser,
GTK_CSS_PARSE_LENGTH GTK_CSS_PARSE_LENGTH
| GTK_CSS_POSITIVE_ONLY); | GTK_CSS_POSITIVE_ONLY);
if (values[RADIUS] == NULL) if (values[RADIUS] == NULL)
return FALSE; return FALSE;
} }
else else
values[RADIUS] = gtk_css_number_value_new (0.0, GTK_CSS_PX); values[RADIUS] = _gtk_css_number_value_new (0.0, GTK_CSS_PX);
if (box_shadow_mode && gtk_css_number_value_can_parse (parser)) if (box_shadow_mode && gtk_css_number_value_can_parse (parser))
{ {
values[SPREAD] = gtk_css_number_value_parse (parser, values[SPREAD] = _gtk_css_number_value_parse (parser,
GTK_CSS_PARSE_LENGTH); GTK_CSS_PARSE_LENGTH);
if (values[SPREAD] == NULL) if (values[SPREAD] == NULL)
return FALSE; return FALSE;
} }
else else
values[SPREAD] = gtk_css_number_value_new (0.0, GTK_CSS_PX); values[SPREAD] = _gtk_css_number_value_new (0.0, GTK_CSS_PX);
return TRUE; return TRUE;
} }
@@ -426,7 +429,7 @@ parse_color (GtkCssParser *parser,
{ {
GtkCssValue **color = option_data; GtkCssValue **color = option_data;
*color = gtk_css_color_value_parse (parser); *color = _gtk_css_color_value_parse (parser);
if (*color == NULL) if (*color == NULL)
return FALSE; return FALSE;
@@ -459,7 +462,7 @@ gtk_css_shadow_value_parse_one (GtkCssParser *parser,
} }
if (color == NULL) if (color == NULL)
color = gtk_css_color_value_new_current_color (); color = _gtk_css_color_value_new_current_color ();
result->hoffset = values[HOFFSET]; result->hoffset = values[HOFFSET];
result->voffset = values[VOFFSET]; result->voffset = values[VOFFSET];
@@ -539,13 +542,13 @@ gtk_css_shadow_value_get_extents (const GtkCssValue *value,
const ShadowValue *shadow = &value->shadows[i]; const ShadowValue *shadow = &value->shadows[i];
double hoffset, voffset, spread, radius, clip_radius; double hoffset, voffset, spread, radius, clip_radius;
spread = gtk_css_number_value_get (shadow->spread, 0); spread = _gtk_css_number_value_get (shadow->spread, 0);
radius = gtk_css_number_value_get (shadow->radius, 0); radius = _gtk_css_number_value_get (shadow->radius, 0);
if (!value->is_filter) if (!value->is_filter)
radius = radius / 2.0; radius = radius / 2.0;
clip_radius = gsk_cairo_blur_compute_pixels (radius); clip_radius = gsk_cairo_blur_compute_pixels (radius);
hoffset = gtk_css_number_value_get (shadow->hoffset, 0); hoffset = _gtk_css_number_value_get (shadow->hoffset, 0);
voffset = gtk_css_number_value_get (shadow->voffset, 0); voffset = _gtk_css_number_value_get (shadow->voffset, 0);
border->top = MAX (border->top, ceil (clip_radius + spread - voffset)); border->top = MAX (border->top, ceil (clip_radius + spread - voffset));
border->right = MAX (border->right, ceil (clip_radius + spread + hoffset)); border->right = MAX (border->right, ceil (clip_radius + spread + hoffset));
@@ -578,10 +581,10 @@ gtk_css_shadow_value_snapshot_outset (const GtkCssValue *value,
if (gdk_rgba_is_clear (color)) if (gdk_rgba_is_clear (color))
continue; continue;
dx = gtk_css_number_value_get (shadow->hoffset, 0); dx = _gtk_css_number_value_get (shadow->hoffset, 0);
dy = gtk_css_number_value_get (shadow->voffset, 0); dy = _gtk_css_number_value_get (shadow->voffset, 0);
spread = gtk_css_number_value_get (shadow->spread, 0); spread = _gtk_css_number_value_get (shadow->spread, 0);
radius = gtk_css_number_value_get (shadow->radius, 0); radius = _gtk_css_number_value_get (shadow->radius, 0);
if (value->is_filter) if (value->is_filter)
radius = 2 * radius; radius = 2 * radius;
@@ -613,10 +616,10 @@ gtk_css_shadow_value_snapshot_inset (const GtkCssValue *value,
if (gdk_rgba_is_clear (color)) if (gdk_rgba_is_clear (color))
continue; continue;
dx = gtk_css_number_value_get (shadow->hoffset, 0); dx = _gtk_css_number_value_get (shadow->hoffset, 0);
dy = gtk_css_number_value_get (shadow->voffset, 0); dy = _gtk_css_number_value_get (shadow->voffset, 0);
spread = gtk_css_number_value_get (shadow->spread, 0); spread = _gtk_css_number_value_get (shadow->spread, 0);
radius = gtk_css_number_value_get (shadow->radius, 0); radius = _gtk_css_number_value_get (shadow->radius, 0);
if (value->is_filter) if (value->is_filter)
radius = 2 * radius; radius = 2 * radius;
@@ -733,10 +736,10 @@ gtk_css_shadow_value_push_snapshot (const GtkCssValue *value,
{ {
const ShadowValue *shadow = &value->shadows[i]; const ShadowValue *shadow = &value->shadows[i];
shadows[i].dx = gtk_css_number_value_get (shadow->hoffset, 0); shadows[i].dx = _gtk_css_number_value_get (shadow->hoffset, 0);
shadows[i].dy = gtk_css_number_value_get (shadow->voffset, 0); shadows[i].dy = _gtk_css_number_value_get (shadow->voffset, 0);
shadows[i].color = *gtk_css_color_value_get_rgba (shadow->color); shadows[i].color = *gtk_css_color_value_get_rgba (shadow->color);
shadows[i].radius = gtk_css_number_value_get (shadow->radius, 0); shadows[i].radius = _gtk_css_number_value_get (shadow->radius, 0);
if (value->is_filter) if (value->is_filter)
shadows[i].radius *= 2; shadows[i].radius *= 2;
} }
+2 -9
View File
@@ -104,7 +104,7 @@ gtk_css_shorthand_property_parse_value (GtkStyleProperty *property,
for (i = 0; i < n_props; i++) for (i = 0; i < n_props; i++)
{ {
if (data[i] != NULL) if (data[i] != NULL)
gtk_css_value_unref (data[i]); _gtk_css_value_unref (data[i]);
} }
return NULL; return NULL;
} }
@@ -160,14 +160,7 @@ guint
_gtk_css_shorthand_property_get_n_subproperties (GtkCssShorthandProperty *shorthand) _gtk_css_shorthand_property_get_n_subproperties (GtkCssShorthandProperty *shorthand)
{ {
g_return_val_if_fail (GTK_IS_CSS_SHORTHAND_PROPERTY (shorthand), 0); g_return_val_if_fail (GTK_IS_CSS_SHORTHAND_PROPERTY (shorthand), 0);
return shorthand->subproperties->len; return shorthand->subproperties->len;
} }
guint
_gtk_css_shorthand_property_get_id (GtkCssShorthandProperty *shorthand)
{
g_return_val_if_fail (GTK_IS_CSS_SHORTHAND_PROPERTY (shorthand), 0);
return shorthand->id;
}
+58 -81
View File
@@ -64,7 +64,7 @@ parse_four_numbers (GtkCssShorthandProperty *shorthand,
if (!gtk_css_number_value_can_parse (parser)) if (!gtk_css_number_value_can_parse (parser))
break; break;
values[i] = gtk_css_number_value_parse (parser, flags); values[i] = _gtk_css_number_value_parse (parser, flags);
if (values[i] == NULL) if (values[i] == NULL)
return FALSE; return FALSE;
} }
@@ -77,7 +77,7 @@ parse_four_numbers (GtkCssShorthandProperty *shorthand,
for (; i < 4; i++) for (; i < 4; i++)
{ {
values[i] = gtk_css_value_ref (values[(i - 1) >> 1]); values[i] = _gtk_css_value_ref (values[(i - 1) >> 1]);
} }
return TRUE; return TRUE;
@@ -130,10 +130,10 @@ parse_border_radius (GtkCssShorthandProperty *shorthand,
{ {
if (!gtk_css_number_value_can_parse (parser)) if (!gtk_css_number_value_can_parse (parser))
break; break;
x[i] = gtk_css_number_value_parse (parser, x[i] = _gtk_css_number_value_parse (parser,
GTK_CSS_POSITIVE_ONLY GTK_CSS_POSITIVE_ONLY
| GTK_CSS_PARSE_PERCENT | GTK_CSS_PARSE_PERCENT
| GTK_CSS_PARSE_LENGTH); | GTK_CSS_PARSE_LENGTH);
if (x[i] == NULL) if (x[i] == NULL)
goto fail; goto fail;
} }
@@ -148,7 +148,7 @@ parse_border_radius (GtkCssShorthandProperty *shorthand,
* according to spec. Feel free to check the 4 cases * according to spec. Feel free to check the 4 cases
*/ */
for (; i < 4; i++) for (; i < 4; i++)
x[i] = gtk_css_value_ref (x[(i - 1) >> 1]); x[i] = _gtk_css_value_ref (x[(i - 1) >> 1]);
if (gtk_css_parser_try_delim (parser, '/')) if (gtk_css_parser_try_delim (parser, '/'))
{ {
@@ -156,10 +156,10 @@ parse_border_radius (GtkCssShorthandProperty *shorthand,
{ {
if (!gtk_css_number_value_can_parse (parser)) if (!gtk_css_number_value_can_parse (parser))
break; break;
y[i] = gtk_css_number_value_parse (parser, y[i] = _gtk_css_number_value_parse (parser,
GTK_CSS_POSITIVE_ONLY GTK_CSS_POSITIVE_ONLY
| GTK_CSS_PARSE_PERCENT | GTK_CSS_PARSE_PERCENT
| GTK_CSS_PARSE_LENGTH); | GTK_CSS_PARSE_LENGTH);
if (y[i] == NULL) if (y[i] == NULL)
goto fail; goto fail;
} }
@@ -171,12 +171,12 @@ parse_border_radius (GtkCssShorthandProperty *shorthand,
} }
for (; i < 4; i++) for (; i < 4; i++)
y[i] = gtk_css_value_ref (y[(i - 1) >> 1]); y[i] = _gtk_css_value_ref (y[(i - 1) >> 1]);
} }
else else
{ {
for (i = 0; i < 4; i++) for (i = 0; i < 4; i++)
y[i] = gtk_css_value_ref (x[i]); y[i] = _gtk_css_value_ref (x[i]);
} }
for (i = 0; i < 4; i++) for (i = 0; i < 4; i++)
@@ -190,9 +190,9 @@ fail:
for (i = 0; i < 4; i++) for (i = 0; i < 4; i++)
{ {
if (x[i]) if (x[i])
gtk_css_value_unref (x[i]); _gtk_css_value_unref (x[i]);
if (y[i]) if (y[i])
gtk_css_value_unref (y[i]); _gtk_css_value_unref (y[i]);
} }
return FALSE; return FALSE;
} }
@@ -206,7 +206,7 @@ parse_border_color (GtkCssShorthandProperty *shorthand,
for (i = 0; i < 4; i++) for (i = 0; i < 4; i++)
{ {
values[i] = gtk_css_color_value_parse (parser); values[i] = _gtk_css_color_value_parse (parser);
if (values[i] == NULL) if (values[i] == NULL)
return FALSE; return FALSE;
@@ -216,7 +216,7 @@ parse_border_color (GtkCssShorthandProperty *shorthand,
for (i++; i < 4; i++) for (i++; i < 4; i++)
{ {
values[i] = gtk_css_value_ref (values[(i - 1) >> 1]); values[i] = _gtk_css_value_ref (values[(i - 1) >> 1]);
} }
return TRUE; return TRUE;
@@ -243,7 +243,7 @@ parse_border_style (GtkCssShorthandProperty *shorthand,
} }
for (; i < 4; i++) for (; i < 4; i++)
values[i] = gtk_css_value_ref (values[(i - 1) >> 1]); values[i] = _gtk_css_value_ref (values[(i - 1) >> 1]);
return TRUE; return TRUE;
} }
@@ -325,9 +325,9 @@ parse_border_side (GtkCssShorthandProperty *shorthand,
if (values[0] == NULL && if (values[0] == NULL &&
gtk_css_number_value_can_parse (parser)) gtk_css_number_value_can_parse (parser))
{ {
values[0] = gtk_css_number_value_parse (parser, values[0] = _gtk_css_number_value_parse (parser,
GTK_CSS_POSITIVE_ONLY GTK_CSS_POSITIVE_ONLY
| GTK_CSS_PARSE_LENGTH); | GTK_CSS_PARSE_LENGTH);
if (values[0] == NULL) if (values[0] == NULL)
return FALSE; return FALSE;
} }
@@ -338,7 +338,7 @@ parse_border_side (GtkCssShorthandProperty *shorthand,
} }
else if (values[2] == NULL) else if (values[2] == NULL)
{ {
values[2] = gtk_css_color_value_parse (parser); values[2] = _gtk_css_color_value_parse (parser);
if (values[2] == NULL) if (values[2] == NULL)
return FALSE; return FALSE;
} }
@@ -366,31 +366,31 @@ parse_border (GtkCssShorthandProperty *shorthand,
if (values[0] == NULL && if (values[0] == NULL &&
gtk_css_number_value_can_parse (parser)) gtk_css_number_value_can_parse (parser))
{ {
values[0] = gtk_css_number_value_parse (parser, values[0] = _gtk_css_number_value_parse (parser,
GTK_CSS_POSITIVE_ONLY GTK_CSS_POSITIVE_ONLY
| GTK_CSS_PARSE_LENGTH); | GTK_CSS_PARSE_LENGTH);
if (values[0] == NULL) if (values[0] == NULL)
return FALSE; return FALSE;
values[1] = gtk_css_value_ref (values[0]); values[1] = _gtk_css_value_ref (values[0]);
values[2] = gtk_css_value_ref (values[0]); values[2] = _gtk_css_value_ref (values[0]);
values[3] = gtk_css_value_ref (values[0]); values[3] = _gtk_css_value_ref (values[0]);
} }
else if (values[4] == NULL && else if (values[4] == NULL &&
(values[4] = _gtk_css_border_style_value_try_parse (parser))) (values[4] = _gtk_css_border_style_value_try_parse (parser)))
{ {
values[5] = gtk_css_value_ref (values[4]); values[5] = _gtk_css_value_ref (values[4]);
values[6] = gtk_css_value_ref (values[4]); values[6] = _gtk_css_value_ref (values[4]);
values[7] = gtk_css_value_ref (values[4]); values[7] = _gtk_css_value_ref (values[4]);
} }
else if (values[8] == NULL) else if (values[8] == NULL)
{ {
values[8] = gtk_css_color_value_parse (parser); values[8] = _gtk_css_color_value_parse (parser);
if (values[8] == NULL) if (values[8] == NULL)
return FALSE; return FALSE;
values[9] = gtk_css_value_ref (values[8]); values[9] = _gtk_css_value_ref (values[8]);
values[10] = gtk_css_value_ref (values[8]); values[10] = _gtk_css_value_ref (values[8]);
values[11] = gtk_css_value_ref (values[8]); values[11] = _gtk_css_value_ref (values[8]);
} }
else else
{ {
@@ -449,11 +449,11 @@ parse_font (GtkCssShorthandProperty *shorthand,
if (values[3] == NULL && gtk_css_number_value_can_parse (parser)) if (values[3] == NULL && gtk_css_number_value_can_parse (parser))
{ {
/* This needs to check for font-size, too */ /* This needs to check for font-size, too */
GtkCssValue *num = gtk_css_number_value_parse (parser, GtkCssValue *num = _gtk_css_number_value_parse (parser,
GTK_CSS_PARSE_NUMBER | GTK_CSS_PARSE_NUMBER |
GTK_CSS_PARSE_LENGTH | GTK_CSS_PARSE_LENGTH |
GTK_CSS_PARSE_PERCENT | GTK_CSS_PARSE_PERCENT |
GTK_CSS_POSITIVE_ONLY); GTK_CSS_POSITIVE_ONLY);
if (num == NULL) if (num == NULL)
return FALSE; return FALSE;
@@ -464,8 +464,8 @@ parse_font (GtkCssShorthandProperty *shorthand,
} }
values[3] = num; values[3] = num;
if (gtk_css_number_value_get (values[3], 100) < 1 || if (_gtk_css_number_value_get (values[3], 100) < 1 ||
gtk_css_number_value_get (values[3], 100) > 1000) _gtk_css_number_value_get (values[3], 100) > 1000)
{ {
gtk_css_parser_error_value (parser, "Font weight values must be between 1 and 1000"); gtk_css_parser_error_value (parser, "Font weight values must be between 1 and 1000");
g_clear_pointer (&values[3], gtk_css_value_unref); g_clear_pointer (&values[3], gtk_css_value_unref);
@@ -555,9 +555,9 @@ parse_one_background (GtkCssShorthandProperty *shorthand,
} }
else if (values[6] == NULL) else if (values[6] == NULL)
{ {
value = gtk_css_color_value_parse (parser); value = _gtk_css_color_value_parse (parser);
if (value == NULL) if (value == NULL)
values[6] = gtk_css_value_ref (_gtk_css_style_property_get_initial_value values[6] = _gtk_css_value_ref (_gtk_css_style_property_get_initial_value
(_gtk_css_shorthand_property_get_subproperty (shorthand, 6))); (_gtk_css_shorthand_property_get_subproperty (shorthand, 6)));
else else
values[6] = value; values[6] = value;
@@ -576,7 +576,7 @@ parse_one_background (GtkCssShorthandProperty *shorthand,
while (!value_is_done_parsing (parser)); while (!value_is_done_parsing (parser));
if (values[5] != NULL && values[4] == NULL) if (values[5] != NULL && values[4] == NULL)
values[4] = gtk_css_value_ref (values[5]); values[4] = _gtk_css_value_ref (values[5]);
return TRUE; return TRUE;
} }
@@ -603,7 +603,7 @@ parse_background (GtkCssShorthandProperty *shorthand,
{ {
for (i = 0; i < 6; i++) for (i = 0; i < 6; i++)
{ {
g_ptr_array_set_free_func (arrays[i], (GDestroyNotify) gtk_css_value_unref); g_ptr_array_set_free_func (arrays[i], (GDestroyNotify) _gtk_css_value_unref);
g_ptr_array_unref (arrays[i]); g_ptr_array_unref (arrays[i]);
} }
return FALSE; return FALSE;
@@ -615,7 +615,7 @@ parse_background (GtkCssShorthandProperty *shorthand,
{ {
GtkCssValue *initial = _gtk_css_style_property_get_initial_value ( GtkCssValue *initial = _gtk_css_style_property_get_initial_value (
_gtk_css_shorthand_property_get_subproperty (shorthand, i)); _gtk_css_shorthand_property_get_subproperty (shorthand, i));
step_values[i] = gtk_css_value_ref (_gtk_css_array_value_get_nth (initial, 0)); step_values[i] = _gtk_css_value_ref (_gtk_css_array_value_get_nth (initial, 0));
} }
g_ptr_array_add (arrays[i], step_values[i]); g_ptr_array_add (arrays[i], step_values[i]);
@@ -662,7 +662,7 @@ parse_transition_time (GtkCssParser *parser,
{ {
GtkCssValue **value = option_data; GtkCssValue **value = option_data;
*value = gtk_css_number_value_parse (parser, GTK_CSS_PARSE_TIME); *value = _gtk_css_number_value_parse (parser, GTK_CSS_PARSE_TIME);
return *value != NULL; return *value != NULL;
} }
@@ -714,7 +714,7 @@ parse_transition (GtkCssShorthandProperty *shorthand,
{ {
for (i = 0; i < 4; i++) for (i = 0; i < 4; i++)
{ {
g_ptr_array_set_free_func (arrays[i], (GDestroyNotify) gtk_css_value_unref); g_ptr_array_set_free_func (arrays[i], (GDestroyNotify) _gtk_css_value_unref);
g_ptr_array_unref (arrays[i]); g_ptr_array_unref (arrays[i]);
} }
return FALSE; return FALSE;
@@ -726,7 +726,7 @@ parse_transition (GtkCssShorthandProperty *shorthand,
{ {
GtkCssValue *initial = _gtk_css_style_property_get_initial_value ( GtkCssValue *initial = _gtk_css_style_property_get_initial_value (
_gtk_css_shorthand_property_get_subproperty (shorthand, i)); _gtk_css_shorthand_property_get_subproperty (shorthand, i));
step_values[i] = gtk_css_value_ref (_gtk_css_array_value_get_nth (initial, 0)); step_values[i] = _gtk_css_value_ref (_gtk_css_array_value_get_nth (initial, 0));
} }
g_ptr_array_add (arrays[i], step_values[i]); g_ptr_array_add (arrays[i], step_values[i]);
@@ -752,17 +752,17 @@ parse_one_animation (GtkCssShorthandProperty *shorthand,
{ {
if (values[1] == NULL && gtk_css_parser_try_ident (parser, "infinite")) if (values[1] == NULL && gtk_css_parser_try_ident (parser, "infinite"))
{ {
values[1] = gtk_css_number_value_new (HUGE_VAL, GTK_CSS_NUMBER); values[1] = _gtk_css_number_value_new (HUGE_VAL, GTK_CSS_NUMBER);
} }
else if ((values[1] == NULL || values[3] == NULL) && else if ((values[1] == NULL || values[3] == NULL) &&
gtk_css_number_value_can_parse (parser)) gtk_css_number_value_can_parse (parser))
{ {
GtkCssValue *value; GtkCssValue *value;
value = gtk_css_number_value_parse (parser, value = _gtk_css_number_value_parse (parser,
GTK_CSS_POSITIVE_ONLY GTK_CSS_POSITIVE_ONLY
| (values[1] == NULL ? GTK_CSS_PARSE_NUMBER : 0) | (values[1] == NULL ? GTK_CSS_PARSE_NUMBER : 0)
| (values[3] == NULL ? GTK_CSS_PARSE_TIME : 0)); | (values[3] == NULL ? GTK_CSS_PARSE_TIME : 0));
if (value == NULL) if (value == NULL)
return FALSE; return FALSE;
@@ -831,7 +831,7 @@ parse_animation (GtkCssShorthandProperty *shorthand,
{ {
for (i = 0; i < 7; i++) for (i = 0; i < 7; i++)
{ {
g_ptr_array_set_free_func (arrays[i], (GDestroyNotify) gtk_css_value_unref); g_ptr_array_set_free_func (arrays[i], (GDestroyNotify) _gtk_css_value_unref);
g_ptr_array_unref (arrays[i]); g_ptr_array_unref (arrays[i]);
} }
return FALSE; return FALSE;
@@ -843,7 +843,7 @@ parse_animation (GtkCssShorthandProperty *shorthand,
{ {
GtkCssValue *initial = _gtk_css_style_property_get_initial_value ( GtkCssValue *initial = _gtk_css_style_property_get_initial_value (
_gtk_css_shorthand_property_get_subproperty (shorthand, i)); _gtk_css_shorthand_property_get_subproperty (shorthand, i));
step_values[i] = gtk_css_value_ref (_gtk_css_array_value_get_nth (initial, 0)); step_values[i] = _gtk_css_value_ref (_gtk_css_array_value_get_nth (initial, 0));
} }
g_ptr_array_add (arrays[i], step_values[i]); g_ptr_array_add (arrays[i], step_values[i]);
@@ -891,7 +891,7 @@ parse_text_decoration (GtkCssShorthandProperty *shorthand,
} }
else if (values[2] == NULL) else if (values[2] == NULL)
{ {
values[2] = gtk_css_color_value_parse (parser); values[2] = _gtk_css_color_value_parse (parser);
if (values[2] == NULL) if (values[2] == NULL)
return FALSE; return FALSE;
} }
@@ -1093,7 +1093,6 @@ parse_all (GtkCssShorthandProperty *shorthand,
static void static void
gtk_css_shorthand_property_register (const char *name, gtk_css_shorthand_property_register (const char *name,
unsigned int id,
const char **subproperties, const char **subproperties,
GtkCssShorthandPropertyParseFunc parse_func) GtkCssShorthandPropertyParseFunc parse_func)
{ {
@@ -1104,8 +1103,6 @@ gtk_css_shorthand_property_register (const char *name,
"subproperties", subproperties, "subproperties", subproperties,
NULL); NULL);
node->id = id;
node->parse = parse_func; node->parse = parse_func;
} }
@@ -1161,85 +1158,65 @@ _gtk_css_shorthand_property_init_properties (void)
const char **all_subproperties; const char **all_subproperties;
gtk_css_shorthand_property_register ("font", gtk_css_shorthand_property_register ("font",
GTK_CSS_SHORTHAND_PROPERTY_FONT,
font_subproperties, font_subproperties,
parse_font); parse_font);
gtk_css_shorthand_property_register ("margin", gtk_css_shorthand_property_register ("margin",
GTK_CSS_SHORTHAND_PROPERTY_MARGIN,
margin_subproperties, margin_subproperties,
parse_margin); parse_margin);
gtk_css_shorthand_property_register ("padding", gtk_css_shorthand_property_register ("padding",
GTK_CSS_SHORTHAND_PROPERTY_PADDING,
padding_subproperties, padding_subproperties,
parse_padding); parse_padding);
gtk_css_shorthand_property_register ("border-width", gtk_css_shorthand_property_register ("border-width",
GTK_CSS_SHORTHAND_PROPERTY_BORDER_WIDTH,
border_width_subproperties, border_width_subproperties,
parse_border_width); parse_border_width);
gtk_css_shorthand_property_register ("border-radius", gtk_css_shorthand_property_register ("border-radius",
GTK_CSS_SHORTHAND_PROPERTY_BORDER_RADIUS,
border_radius_subproperties, border_radius_subproperties,
parse_border_radius); parse_border_radius);
gtk_css_shorthand_property_register ("border-color", gtk_css_shorthand_property_register ("border-color",
GTK_CSS_SHORTHAND_PROPERTY_BORDER_COLOR,
border_color_subproperties, border_color_subproperties,
parse_border_color); parse_border_color);
gtk_css_shorthand_property_register ("border-style", gtk_css_shorthand_property_register ("border-style",
GTK_CSS_SHORTHAND_PROPERTY_BORDER_STYLE,
border_style_subproperties, border_style_subproperties,
parse_border_style); parse_border_style);
gtk_css_shorthand_property_register ("border-image", gtk_css_shorthand_property_register ("border-image",
GTK_CSS_SHORTHAND_PROPERTY_BORDER_IMAGE,
border_image_subproperties, border_image_subproperties,
parse_border_image); parse_border_image);
gtk_css_shorthand_property_register ("border-top", gtk_css_shorthand_property_register ("border-top",
GTK_CSS_SHORTHAND_PROPERTY_BORDER_TOP,
border_top_subproperties, border_top_subproperties,
parse_border_side); parse_border_side);
gtk_css_shorthand_property_register ("border-right", gtk_css_shorthand_property_register ("border-right",
GTK_CSS_SHORTHAND_PROPERTY_BORDER_RIGHT,
border_right_subproperties, border_right_subproperties,
parse_border_side); parse_border_side);
gtk_css_shorthand_property_register ("border-bottom", gtk_css_shorthand_property_register ("border-bottom",
GTK_CSS_SHORTHAND_PROPERTY_BORDER_BOTTOM,
border_bottom_subproperties, border_bottom_subproperties,
parse_border_side); parse_border_side);
gtk_css_shorthand_property_register ("border-left", gtk_css_shorthand_property_register ("border-left",
GTK_CSS_SHORTHAND_PROPERTY_BORDER_LEFT,
border_left_subproperties, border_left_subproperties,
parse_border_side); parse_border_side);
gtk_css_shorthand_property_register ("border", gtk_css_shorthand_property_register ("border",
GTK_CSS_SHORTHAND_PROPERTY_BORDER,
border_subproperties, border_subproperties,
parse_border); parse_border);
gtk_css_shorthand_property_register ("outline", gtk_css_shorthand_property_register ("outline",
GTK_CSS_SHORTHAND_PROPERTY_OUTLINE,
outline_subproperties, outline_subproperties,
parse_border_side); parse_border_side);
gtk_css_shorthand_property_register ("background", gtk_css_shorthand_property_register ("background",
GTK_CSS_SHORTHAND_PROPERTY_BACKGROUND,
background_subproperties, background_subproperties,
parse_background); parse_background);
gtk_css_shorthand_property_register ("transition", gtk_css_shorthand_property_register ("transition",
GTK_CSS_SHORTHAND_PROPERTY_TRANSITION,
transition_subproperties, transition_subproperties,
parse_transition); parse_transition);
gtk_css_shorthand_property_register ("animation", gtk_css_shorthand_property_register ("animation",
GTK_CSS_SHORTHAND_PROPERTY_ANIMATION,
animation_subproperties, animation_subproperties,
parse_animation); parse_animation);
gtk_css_shorthand_property_register ("text-decoration", gtk_css_shorthand_property_register ("text-decoration",
GTK_CSS_SHORTHAND_PROPERTY_TEXT_DECORATION,
text_decoration_subproperties, text_decoration_subproperties,
parse_text_decoration); parse_text_decoration);
gtk_css_shorthand_property_register ("font-variant", gtk_css_shorthand_property_register ("font-variant",
GTK_CSS_SHORTHAND_PROPERTY_FONT_VARIANT,
font_variant_subproperties, font_variant_subproperties,
parse_font_variant); parse_font_variant);
all_subproperties = get_all_subproperties (); all_subproperties = get_all_subproperties ();
gtk_css_shorthand_property_register ("all", gtk_css_shorthand_property_register ("all",
GTK_CSS_SHORTHAND_PROPERTY_ALL,
all_subproperties, all_subproperties,
parse_all); parse_all);
g_free (all_subproperties); g_free (all_subproperties);
-4
View File
@@ -49,8 +49,6 @@ struct _GtkCssShorthandProperty
GPtrArray *subproperties; GPtrArray *subproperties;
guint id;
GtkCssShorthandPropertyParseFunc parse; GtkCssShorthandPropertyParseFunc parse;
}; };
@@ -67,8 +65,6 @@ GtkCssStyleProperty * _gtk_css_shorthand_property_get_subproperty (GtkCssS
guint property); guint property);
guint _gtk_css_shorthand_property_get_n_subproperties (GtkCssShorthandProperty *shorthand) G_GNUC_CONST; guint _gtk_css_shorthand_property_get_n_subproperties (GtkCssShorthandProperty *shorthand) G_GNUC_CONST;
guint _gtk_css_shorthand_property_get_id (GtkCssShorthandProperty *shorthand) G_GNUC_CONST;
G_END_DECLS G_END_DECLS
+111 -131
View File
@@ -39,12 +39,12 @@
#include "gtkstyleproviderprivate.h" #include "gtkstyleproviderprivate.h"
#include "gtkcssdimensionvalueprivate.h" #include "gtkcssdimensionvalueprivate.h"
static void gtk_css_static_style_compute_value (GtkCssStaticStyle *style,
static void gtk_css_static_style_compute_value (GtkCssStaticStyle *style, GtkStyleProvider *provider,
guint id, GtkCssStyle *parent_style,
GtkCssValue *specified, guint id,
GtkCssSection *section, GtkCssValue *specified,
GtkCssComputeContext *context); GtkCssSection *section);
#define GET_VALUES(v) (GtkCssValue **)((guint8*)(v) + sizeof (GtkCssValues)) #define GET_VALUES(v) (GtkCssValue **)((guint8*)(v) + sizeof (GtkCssValues))
@@ -62,7 +62,7 @@ gtk_css_## NAME ## _values_compute_changes_and_affects (GtkCssStyle *style1, \
{ \ { \
GtkCssValue *v1 = g1[i] ? g1[i] : style1->core->color; \ GtkCssValue *v1 = g1[i] ? g1[i] : style1->core->color; \
GtkCssValue *v2 = g2[i] ? g2[i] : style2->core->color; \ GtkCssValue *v2 = g2[i] ? g2[i] : style2->core->color; \
if (!gtk_css_value_equal (v1, v2)) \ if (!_gtk_css_value_equal (v1, v2)) \
{ \ { \
guint id = NAME ## _props[i]; \ guint id = NAME ## _props[i]; \
*changes = _gtk_bitmask_set (*changes, id, TRUE); \ *changes = _gtk_bitmask_set (*changes, id, TRUE); \
@@ -72,9 +72,10 @@ gtk_css_## NAME ## _values_compute_changes_and_affects (GtkCssStyle *style1, \
} \ } \
\ \
static inline void \ static inline void \
gtk_css_ ## NAME ## _values_new_compute (GtkCssStaticStyle *sstyle, \ gtk_css_ ## NAME ## _values_new_compute (GtkCssStaticStyle *sstyle, \
GtkCssLookup *lookup, \ GtkStyleProvider *provider, \
GtkCssComputeContext *context) \ GtkCssStyle *parent_style, \
GtkCssLookup *lookup) \
{ \ { \
GtkCssStyle *style = (GtkCssStyle *)sstyle; \ GtkCssStyle *style = (GtkCssStyle *)sstyle; \
int i; \ int i; \
@@ -85,10 +86,11 @@ gtk_css_ ## NAME ## _values_new_compute (GtkCssStaticStyle *sstyle, \
{ \ { \
guint id = NAME ## _props[i]; \ guint id = NAME ## _props[i]; \
gtk_css_static_style_compute_value (sstyle, \ gtk_css_static_style_compute_value (sstyle, \
provider, \
parent_style, \
id, \ id, \
lookup->values[id].value, \ lookup->values[id].value, \
lookup->values[id].section, \ lookup->values[id].section); \
context); \
} \ } \
} \ } \
static GtkBitmask * gtk_css_ ## NAME ## _values_mask; \ static GtkBitmask * gtk_css_ ## NAME ## _values_mask; \
@@ -175,7 +177,7 @@ G_DEFINE_TYPE (GtkCssStaticStyle, gtk_css_static_style, GTK_TYPE_CSS_STYLE)
static GtkCssSection * static GtkCssSection *
gtk_css_static_style_get_section (GtkCssStyle *style, gtk_css_static_style_get_section (GtkCssStyle *style,
guint id) guint id)
{ {
GtkCssStaticStyle *sstyle = GTK_CSS_STATIC_STYLE (style); GtkCssStaticStyle *sstyle = GTK_CSS_STATIC_STYLE (style);
@@ -268,7 +270,7 @@ static void
maybe_unref_value (gpointer value) maybe_unref_value (gpointer value)
{ {
if (value) if (value)
gtk_css_value_unref (value); _gtk_css_value_unref (value);
} }
static inline void static inline void
@@ -591,7 +593,7 @@ gtk_css_static_style_set_value (GtkCssStaticStyle *sstyle,
if (sstyle->original_values && sstyle->original_values->len > id && if (sstyle->original_values && sstyle->original_values->len > id &&
g_ptr_array_index (sstyle->original_values, id)) g_ptr_array_index (sstyle->original_values, id))
{ {
gtk_css_value_unref (g_ptr_array_index (sstyle->original_values, id)); _gtk_css_value_unref (g_ptr_array_index (sstyle->original_values, id));
g_ptr_array_index (sstyle->original_values, id) = NULL; g_ptr_array_index (sstyle->original_values, id) = NULL;
} }
@@ -601,7 +603,7 @@ gtk_css_static_style_set_value (GtkCssStaticStyle *sstyle,
sstyle->original_values = g_ptr_array_new_with_free_func (maybe_unref_value); sstyle->original_values = g_ptr_array_new_with_free_func (maybe_unref_value);
if (sstyle->original_values->len <= id) if (sstyle->original_values->len <= id)
g_ptr_array_set_size (sstyle->original_values, id + 1); g_ptr_array_set_size (sstyle->original_values, id + 1);
g_ptr_array_index (sstyle->original_values, id) = gtk_css_value_ref (original_value); g_ptr_array_index (sstyle->original_values, id) = _gtk_css_value_ref (original_value);
} }
} }
@@ -648,19 +650,18 @@ static GtkCssValues *
gtk_css_background_create_initial_values (void) gtk_css_background_create_initial_values (void)
{ {
GtkCssBackgroundValues *values; GtkCssBackgroundValues *values;
GtkCssComputeContext context = { NULL, };
values = (GtkCssBackgroundValues *)gtk_css_values_new (GTK_CSS_BACKGROUND_INITIAL_VALUES); values = (GtkCssBackgroundValues *)gtk_css_values_new (GTK_CSS_BACKGROUND_INITIAL_VALUES);
values->background_color = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BACKGROUND_COLOR, &context); values->background_color = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BACKGROUND_COLOR, NULL, NULL, NULL);
values->box_shadow = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BOX_SHADOW, &context); values->box_shadow = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BOX_SHADOW, NULL, NULL, NULL);
values->background_clip = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BACKGROUND_CLIP, &context); values->background_clip = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BACKGROUND_CLIP, NULL, NULL, NULL);
values->background_origin = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BACKGROUND_ORIGIN, &context); values->background_origin = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BACKGROUND_ORIGIN, NULL, NULL, NULL);
values->background_size = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BACKGROUND_SIZE, &context); values->background_size = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BACKGROUND_SIZE, NULL, NULL, NULL);
values->background_position = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BACKGROUND_POSITION, &context); values->background_position = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BACKGROUND_POSITION, NULL, NULL, NULL);
values->background_repeat = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BACKGROUND_REPEAT, &context); values->background_repeat = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BACKGROUND_REPEAT, NULL, NULL, NULL);
values->background_image = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BACKGROUND_IMAGE, &context); values->background_image = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BACKGROUND_IMAGE, NULL, NULL, NULL);
values->background_blend_mode = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BACKGROUND_BLEND_MODE, &context); values->background_blend_mode = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BACKGROUND_BLEND_MODE, NULL, NULL, NULL);
return (GtkCssValues *)values; return (GtkCssValues *)values;
} }
@@ -669,30 +670,29 @@ static GtkCssValues *
gtk_css_border_create_initial_values (void) gtk_css_border_create_initial_values (void)
{ {
GtkCssBorderValues *values; GtkCssBorderValues *values;
GtkCssComputeContext context = { NULL, };
values = (GtkCssBorderValues *)gtk_css_values_new (GTK_CSS_BORDER_INITIAL_VALUES); values = (GtkCssBorderValues *)gtk_css_values_new (GTK_CSS_BORDER_INITIAL_VALUES);
values->border_top_style = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_TOP_STYLE, &context); values->border_top_style = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_TOP_STYLE, NULL, NULL, NULL);
values->border_top_width = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_TOP_WIDTH, &context); values->border_top_width = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_TOP_WIDTH, NULL, NULL, NULL);
values->border_left_style = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_LEFT_STYLE, &context); values->border_left_style = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_LEFT_STYLE, NULL, NULL, NULL);
values->border_left_width = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_LEFT_WIDTH, &context); values->border_left_width = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_LEFT_WIDTH, NULL, NULL, NULL);
values->border_bottom_style = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_BOTTOM_STYLE, &context); values->border_bottom_style = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_BOTTOM_STYLE, NULL, NULL, NULL);
values->border_bottom_width = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_BOTTOM_WIDTH, &context); values->border_bottom_width = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_BOTTOM_WIDTH, NULL, NULL, NULL);
values->border_right_style = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_RIGHT_STYLE, &context); values->border_right_style = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_RIGHT_STYLE, NULL, NULL, NULL);
values->border_right_width = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_RIGHT_WIDTH, &context); values->border_right_width = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_RIGHT_WIDTH, NULL, NULL, NULL);
values->border_top_left_radius = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_TOP_LEFT_RADIUS, &context); values->border_top_left_radius = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_TOP_LEFT_RADIUS, NULL, NULL, NULL);
values->border_top_right_radius = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_TOP_RIGHT_RADIUS, &context); values->border_top_right_radius = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_TOP_RIGHT_RADIUS, NULL, NULL, NULL);
values->border_bottom_left_radius = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_BOTTOM_LEFT_RADIUS, &context); values->border_bottom_left_radius = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_BOTTOM_LEFT_RADIUS, NULL, NULL, NULL);
values->border_bottom_right_radius = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_BOTTOM_RIGHT_RADIUS, &context); values->border_bottom_right_radius = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_BOTTOM_RIGHT_RADIUS, NULL, NULL, NULL);
values->border_top_color = NULL; values->border_top_color = NULL;
values->border_right_color = NULL; values->border_right_color = NULL;
values->border_bottom_color = NULL; values->border_bottom_color = NULL;
values->border_left_color = NULL; values->border_left_color = NULL;
values->border_image_source = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_IMAGE_SOURCE, &context); values->border_image_source = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_IMAGE_SOURCE, NULL, NULL, NULL);
values->border_image_repeat = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_IMAGE_REPEAT, &context); values->border_image_repeat = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_IMAGE_REPEAT, NULL, NULL, NULL);
values->border_image_slice = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_IMAGE_SLICE, &context); values->border_image_slice = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_IMAGE_SLICE, NULL, NULL, NULL);
values->border_image_width = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_IMAGE_WIDTH, &context); values->border_image_width = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_IMAGE_WIDTH, NULL, NULL, NULL);
return (GtkCssValues *)values; return (GtkCssValues *)values;
} }
@@ -701,13 +701,12 @@ static GtkCssValues *
gtk_css_outline_create_initial_values (void) gtk_css_outline_create_initial_values (void)
{ {
GtkCssOutlineValues *values; GtkCssOutlineValues *values;
GtkCssComputeContext context = { NULL, };
values = (GtkCssOutlineValues *)gtk_css_values_new (GTK_CSS_OUTLINE_INITIAL_VALUES); values = (GtkCssOutlineValues *)gtk_css_values_new (GTK_CSS_OUTLINE_INITIAL_VALUES);
values->outline_style = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_OUTLINE_STYLE, &context); values->outline_style = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_OUTLINE_STYLE, NULL, NULL, NULL);
values->outline_width = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_OUTLINE_WIDTH, &context); values->outline_width = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_OUTLINE_WIDTH, NULL, NULL, NULL);
values->outline_offset = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_OUTLINE_OFFSET, &context); values->outline_offset = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_OUTLINE_OFFSET, NULL, NULL, NULL);
values->outline_color = NULL; values->outline_color = NULL;
return (GtkCssValues *)values; return (GtkCssValues *)values;
@@ -729,21 +728,20 @@ static GtkCssValues *
gtk_css_font_variant_create_initial_values (void) gtk_css_font_variant_create_initial_values (void)
{ {
GtkCssFontVariantValues *values; GtkCssFontVariantValues *values;
GtkCssComputeContext context = { NULL, };
values = (GtkCssFontVariantValues *)gtk_css_values_new (GTK_CSS_FONT_VARIANT_INITIAL_VALUES); values = (GtkCssFontVariantValues *)gtk_css_values_new (GTK_CSS_FONT_VARIANT_INITIAL_VALUES);
values->text_decoration_line = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_TEXT_DECORATION_LINE, &context); values->text_decoration_line = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_TEXT_DECORATION_LINE, NULL, NULL, NULL);
values->text_decoration_color = NULL; values->text_decoration_color = NULL;
values->text_decoration_style = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_TEXT_DECORATION_STYLE, &context); values->text_decoration_style = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_TEXT_DECORATION_STYLE, NULL, NULL, NULL);
values->text_transform = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_TEXT_TRANSFORM, &context); values->text_transform = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_TEXT_TRANSFORM, NULL, NULL, NULL);
values->font_kerning = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_FONT_KERNING, &context); values->font_kerning = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_FONT_KERNING, NULL, NULL, NULL);
values->font_variant_ligatures = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_FONT_VARIANT_LIGATURES, &context); values->font_variant_ligatures = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_FONT_VARIANT_LIGATURES, NULL, NULL, NULL);
values->font_variant_position = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_FONT_VARIANT_POSITION, &context); values->font_variant_position = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_FONT_VARIANT_POSITION, NULL, NULL, NULL);
values->font_variant_caps = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_FONT_VARIANT_CAPS, &context); values->font_variant_caps = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_FONT_VARIANT_CAPS, NULL, NULL, NULL);
values->font_variant_numeric = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_FONT_VARIANT_NUMERIC, &context); values->font_variant_numeric = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_FONT_VARIANT_NUMERIC, NULL, NULL, NULL);
values->font_variant_alternates = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_FONT_VARIANT_ALTERNATES, &context); values->font_variant_alternates = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_FONT_VARIANT_ALTERNATES, NULL, NULL, NULL);
values->font_variant_east_asian = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_FONT_VARIANT_EAST_ASIAN, &context); values->font_variant_east_asian = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_FONT_VARIANT_EAST_ASIAN, NULL, NULL, NULL);
return (GtkCssValues *)values; return (GtkCssValues *)values;
} }
@@ -752,18 +750,17 @@ static GtkCssValues *
gtk_css_animation_create_initial_values (void) gtk_css_animation_create_initial_values (void)
{ {
GtkCssAnimationValues *values; GtkCssAnimationValues *values;
GtkCssComputeContext context = { NULL, };
values = (GtkCssAnimationValues *)gtk_css_values_new (GTK_CSS_ANIMATION_INITIAL_VALUES); values = (GtkCssAnimationValues *)gtk_css_values_new (GTK_CSS_ANIMATION_INITIAL_VALUES);
values->animation_name = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_ANIMATION_NAME, &context); values->animation_name = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_ANIMATION_NAME, NULL, NULL, NULL);
values->animation_duration = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_ANIMATION_DURATION, &context); values->animation_duration = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_ANIMATION_DURATION, NULL, NULL, NULL);
values->animation_timing_function = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_ANIMATION_TIMING_FUNCTION, &context); values->animation_timing_function = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_ANIMATION_TIMING_FUNCTION, NULL, NULL, NULL);
values->animation_iteration_count = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_ANIMATION_ITERATION_COUNT, &context); values->animation_iteration_count = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_ANIMATION_ITERATION_COUNT, NULL, NULL, NULL);
values->animation_direction = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_ANIMATION_DIRECTION, &context); values->animation_direction = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_ANIMATION_DIRECTION, NULL, NULL, NULL);
values->animation_play_state = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_ANIMATION_PLAY_STATE, &context); values->animation_play_state = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_ANIMATION_PLAY_STATE, NULL, NULL, NULL);
values->animation_delay = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_ANIMATION_DELAY, &context); values->animation_delay = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_ANIMATION_DELAY, NULL, NULL, NULL);
values->animation_fill_mode = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_ANIMATION_FILL_MODE, &context); values->animation_fill_mode = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_ANIMATION_FILL_MODE, NULL, NULL, NULL);
return (GtkCssValues *)values; return (GtkCssValues *)values;
} }
@@ -772,14 +769,13 @@ static GtkCssValues *
gtk_css_transition_create_initial_values (void) gtk_css_transition_create_initial_values (void)
{ {
GtkCssTransitionValues *values; GtkCssTransitionValues *values;
GtkCssComputeContext context = { NULL, };
values = (GtkCssTransitionValues *)gtk_css_values_new (GTK_CSS_TRANSITION_INITIAL_VALUES); values = (GtkCssTransitionValues *)gtk_css_values_new (GTK_CSS_TRANSITION_INITIAL_VALUES);
values->transition_property = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_TRANSITION_PROPERTY, &context); values->transition_property = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_TRANSITION_PROPERTY, NULL, NULL, NULL);
values->transition_duration = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_TRANSITION_DURATION, &context); values->transition_duration = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_TRANSITION_DURATION, NULL, NULL, NULL);
values->transition_timing_function = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_TRANSITION_TIMING_FUNCTION, &context); values->transition_timing_function = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_TRANSITION_TIMING_FUNCTION, NULL, NULL, NULL);
values->transition_delay = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_TRANSITION_DELAY, &context); values->transition_delay = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_TRANSITION_DELAY, NULL, NULL, NULL);
return (GtkCssValues *)values; return (GtkCssValues *)values;
} }
@@ -788,21 +784,20 @@ static GtkCssValues *
gtk_css_size_create_initial_values (void) gtk_css_size_create_initial_values (void)
{ {
GtkCssSizeValues *values; GtkCssSizeValues *values;
GtkCssComputeContext context = { NULL, };
values = (GtkCssSizeValues *)gtk_css_values_new (GTK_CSS_SIZE_INITIAL_VALUES); values = (GtkCssSizeValues *)gtk_css_values_new (GTK_CSS_SIZE_INITIAL_VALUES);
values->margin_top = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_MARGIN_TOP, &context); values->margin_top = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_MARGIN_TOP, NULL, NULL, NULL);
values->margin_left = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_MARGIN_LEFT, &context); values->margin_left = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_MARGIN_LEFT, NULL, NULL, NULL);
values->margin_bottom = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_MARGIN_BOTTOM, &context); values->margin_bottom = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_MARGIN_BOTTOM, NULL, NULL, NULL);
values->margin_right = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_MARGIN_RIGHT, &context); values->margin_right = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_MARGIN_RIGHT, NULL, NULL, NULL);
values->padding_top = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_PADDING_TOP, &context); values->padding_top = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_PADDING_TOP, NULL, NULL, NULL);
values->padding_left = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_PADDING_LEFT, &context); values->padding_left = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_PADDING_LEFT, NULL, NULL, NULL);
values->padding_bottom = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_PADDING_BOTTOM, &context); values->padding_bottom = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_PADDING_BOTTOM, NULL, NULL, NULL);
values->padding_right = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_PADDING_RIGHT, &context); values->padding_right = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_PADDING_RIGHT, NULL, NULL, NULL);
values->border_spacing = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_SPACING, &context); values->border_spacing = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_SPACING, NULL, NULL, NULL);
values->min_width = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_MIN_WIDTH, &context); values->min_width = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_MIN_WIDTH, NULL, NULL, NULL);
values->min_height = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_MIN_HEIGHT, &context); values->min_height = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_MIN_HEIGHT, NULL, NULL, NULL);
return (GtkCssValues *)values; return (GtkCssValues *)values;
} }
@@ -811,17 +806,16 @@ static GtkCssValues *
gtk_css_other_create_initial_values (void) gtk_css_other_create_initial_values (void)
{ {
GtkCssOtherValues *values; GtkCssOtherValues *values;
GtkCssComputeContext context = { NULL, };
values = (GtkCssOtherValues *)gtk_css_values_new (GTK_CSS_OTHER_INITIAL_VALUES); values = (GtkCssOtherValues *)gtk_css_values_new (GTK_CSS_OTHER_INITIAL_VALUES);
values->icon_source = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_ICON_SOURCE, &context); values->icon_source = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_ICON_SOURCE, NULL, NULL, NULL);
values->icon_transform = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_ICON_TRANSFORM, &context); values->icon_transform = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_ICON_TRANSFORM, NULL, NULL, NULL);
values->icon_filter = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_ICON_FILTER, &context); values->icon_filter = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_ICON_FILTER, NULL, NULL, NULL);
values->transform = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_TRANSFORM, &context); values->transform = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_TRANSFORM, NULL, NULL, NULL);
values->transform_origin = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_TRANSFORM_ORIGIN, &context); values->transform_origin = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_TRANSFORM_ORIGIN, NULL, NULL, NULL);
values->opacity = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_OPACITY, &context); values->opacity = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_OPACITY, NULL, NULL, NULL);
values->filter = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_FILTER, &context); values->filter = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_FILTER, NULL, NULL, NULL);
return (GtkCssValues *)values; return (GtkCssValues *)values;
} }
@@ -833,8 +827,6 @@ gtk_css_lookup_resolve (GtkCssLookup *lookup,
GtkCssStyle *parent_style) GtkCssStyle *parent_style)
{ {
GtkCssStyle *style = (GtkCssStyle *)sstyle; GtkCssStyle *style = (GtkCssStyle *)sstyle;
GtkCssValue *shorthands[GTK_CSS_SHORTHAND_PROPERTY_N_PROPERTIES] = { NULL, };
GtkCssComputeContext context = { NULL, };
gtk_internal_return_if_fail (lookup != NULL); gtk_internal_return_if_fail (lookup != NULL);
gtk_internal_return_if_fail (GTK_IS_STYLE_PROVIDER (provider)); gtk_internal_return_if_fail (GTK_IS_STYLE_PROVIDER (provider));
@@ -847,7 +839,6 @@ gtk_css_lookup_resolve (GtkCssLookup *lookup,
gpointer id; gpointer id;
GtkCssVariableValue *value; GtkCssVariableValue *value;
g_clear_pointer (&style->variables, gtk_css_variable_set_unref);
style->variables = gtk_css_variable_set_new (); style->variables = gtk_css_variable_set_new ();
g_hash_table_iter_init (&iter, lookup->custom_values); g_hash_table_iter_init (&iter, lookup->custom_values);
@@ -865,15 +856,9 @@ gtk_css_lookup_resolve (GtkCssLookup *lookup,
} }
else if (parent_style && parent_style->variables) else if (parent_style && parent_style->variables)
{ {
g_clear_pointer (&style->variables, gtk_css_variable_set_unref);
style->variables = gtk_css_variable_set_ref (parent_style->variables); style->variables = gtk_css_variable_set_ref (parent_style->variables);
} }
context.provider = provider;
context.style = (GtkCssStyle *) sstyle;
context.parent_style = parent_style;
context.shorthands = shorthands;
if (_gtk_bitmask_is_empty (_gtk_css_lookup_get_set_values (lookup))) if (_gtk_bitmask_is_empty (_gtk_css_lookup_get_set_values (lookup)))
{ {
style->background = (GtkCssBackgroundValues *)gtk_css_values_ref (gtk_css_background_initial_values); style->background = (GtkCssBackgroundValues *)gtk_css_values_ref (gtk_css_background_initial_values);
@@ -893,9 +878,9 @@ gtk_css_lookup_resolve (GtkCssLookup *lookup,
} }
else else
{ {
gtk_css_core_values_new_compute (sstyle, lookup, &context); gtk_css_core_values_new_compute (sstyle, provider, parent_style, lookup);
gtk_css_icon_values_new_compute (sstyle, lookup, &context); gtk_css_icon_values_new_compute (sstyle, provider, parent_style, lookup);
gtk_css_font_values_new_compute (sstyle, lookup, &context); gtk_css_font_values_new_compute (sstyle, provider, parent_style, lookup);
} }
return; return;
@@ -904,63 +889,57 @@ gtk_css_lookup_resolve (GtkCssLookup *lookup,
if (parent_style && gtk_css_core_values_unset (lookup)) if (parent_style && gtk_css_core_values_unset (lookup))
style->core = (GtkCssCoreValues *)gtk_css_values_ref ((GtkCssValues *)parent_style->core); style->core = (GtkCssCoreValues *)gtk_css_values_ref ((GtkCssValues *)parent_style->core);
else else
gtk_css_core_values_new_compute (sstyle, lookup, &context); gtk_css_core_values_new_compute (sstyle, provider, parent_style, lookup);
if (gtk_css_background_values_unset (lookup)) if (gtk_css_background_values_unset (lookup))
style->background = (GtkCssBackgroundValues *)gtk_css_values_ref (gtk_css_background_initial_values); style->background = (GtkCssBackgroundValues *)gtk_css_values_ref (gtk_css_background_initial_values);
else else
gtk_css_background_values_new_compute (sstyle, lookup, &context); gtk_css_background_values_new_compute (sstyle, provider, parent_style, lookup);
if (gtk_css_border_values_unset (lookup)) if (gtk_css_border_values_unset (lookup))
style->border = (GtkCssBorderValues *)gtk_css_values_ref (gtk_css_border_initial_values); style->border = (GtkCssBorderValues *)gtk_css_values_ref (gtk_css_border_initial_values);
else else
gtk_css_border_values_new_compute (sstyle, lookup, &context); gtk_css_border_values_new_compute (sstyle, provider, parent_style, lookup);
if (parent_style && gtk_css_icon_values_unset (lookup)) if (parent_style && gtk_css_icon_values_unset (lookup))
style->icon = (GtkCssIconValues *)gtk_css_values_ref ((GtkCssValues *)parent_style->icon); style->icon = (GtkCssIconValues *)gtk_css_values_ref ((GtkCssValues *)parent_style->icon);
else else
gtk_css_icon_values_new_compute (sstyle, lookup, &context); gtk_css_icon_values_new_compute (sstyle, provider, parent_style, lookup);
if (gtk_css_outline_values_unset (lookup)) if (gtk_css_outline_values_unset (lookup))
style->outline = (GtkCssOutlineValues *)gtk_css_values_ref (gtk_css_outline_initial_values); style->outline = (GtkCssOutlineValues *)gtk_css_values_ref (gtk_css_outline_initial_values);
else else
gtk_css_outline_values_new_compute (sstyle, lookup, &context); gtk_css_outline_values_new_compute (sstyle, provider, parent_style, lookup);
if (parent_style && gtk_css_font_values_unset (lookup)) if (parent_style && gtk_css_font_values_unset (lookup))
style->font = (GtkCssFontValues *)gtk_css_values_ref ((GtkCssValues *)parent_style->font); style->font = (GtkCssFontValues *)gtk_css_values_ref ((GtkCssValues *)parent_style->font);
else else
gtk_css_font_values_new_compute (sstyle, lookup, &context); gtk_css_font_values_new_compute (sstyle, provider, parent_style, lookup);
if (gtk_css_font_variant_values_unset (lookup)) if (gtk_css_font_variant_values_unset (lookup))
style->font_variant = (GtkCssFontVariantValues *)gtk_css_values_ref (gtk_css_font_variant_initial_values); style->font_variant = (GtkCssFontVariantValues *)gtk_css_values_ref (gtk_css_font_variant_initial_values);
else else
gtk_css_font_variant_values_new_compute (sstyle, lookup, &context); gtk_css_font_variant_values_new_compute (sstyle, provider, parent_style, lookup);
if (gtk_css_animation_values_unset (lookup)) if (gtk_css_animation_values_unset (lookup))
style->animation = (GtkCssAnimationValues *)gtk_css_values_ref (gtk_css_animation_initial_values); style->animation = (GtkCssAnimationValues *)gtk_css_values_ref (gtk_css_animation_initial_values);
else else
gtk_css_animation_values_new_compute (sstyle, lookup, &context); gtk_css_animation_values_new_compute (sstyle, provider, parent_style, lookup);
if (gtk_css_transition_values_unset (lookup)) if (gtk_css_transition_values_unset (lookup))
style->transition = (GtkCssTransitionValues *)gtk_css_values_ref (gtk_css_transition_initial_values); style->transition = (GtkCssTransitionValues *)gtk_css_values_ref (gtk_css_transition_initial_values);
else else
gtk_css_transition_values_new_compute (sstyle, lookup, &context); gtk_css_transition_values_new_compute (sstyle, provider, parent_style, lookup);
if (gtk_css_size_values_unset (lookup)) if (gtk_css_size_values_unset (lookup))
style->size = (GtkCssSizeValues *)gtk_css_values_ref (gtk_css_size_initial_values); style->size = (GtkCssSizeValues *)gtk_css_values_ref (gtk_css_size_initial_values);
else else
gtk_css_size_values_new_compute (sstyle, lookup, &context); gtk_css_size_values_new_compute (sstyle, provider, parent_style, lookup);
if (gtk_css_other_values_unset (lookup)) if (gtk_css_other_values_unset (lookup))
style->other = (GtkCssOtherValues *)gtk_css_values_ref (gtk_css_other_initial_values); style->other = (GtkCssOtherValues *)gtk_css_values_ref (gtk_css_other_initial_values);
else else
gtk_css_other_values_new_compute (sstyle, lookup, &context); gtk_css_other_values_new_compute (sstyle, provider, parent_style, lookup);
for (unsigned int i = 0; i < GTK_CSS_SHORTHAND_PROPERTY_N_PROPERTIES; i++)
{
if (shorthands[i])
gtk_css_value_unref (shorthands[i]);
}
} }
GtkCssStyle * GtkCssStyle *
@@ -1008,11 +987,12 @@ G_STATIC_ASSERT (GTK_CSS_PROPERTY_BORDER_LEFT_STYLE == GTK_CSS_PROPERTY_BORDER_L
G_STATIC_ASSERT (GTK_CSS_PROPERTY_OUTLINE_STYLE == GTK_CSS_PROPERTY_OUTLINE_WIDTH - 1); G_STATIC_ASSERT (GTK_CSS_PROPERTY_OUTLINE_STYLE == GTK_CSS_PROPERTY_OUTLINE_WIDTH - 1);
static void static void
gtk_css_static_style_compute_value (GtkCssStaticStyle *style, gtk_css_static_style_compute_value (GtkCssStaticStyle *style,
guint id, GtkStyleProvider *provider,
GtkCssValue *specified, GtkCssStyle *parent_style,
GtkCssSection *section, guint id,
GtkCssComputeContext *context) GtkCssValue *specified,
GtkCssSection *section)
{ {
GtkCssValue *value, *original_value; GtkCssValue *value, *original_value;
GtkBorderStyle border_style; GtkBorderStyle border_style;
@@ -1052,21 +1032,21 @@ gtk_css_static_style_compute_value (GtkCssStaticStyle *style,
*/ */
if (specified) if (specified)
{ {
value = gtk_css_value_compute (specified, id, context); value = _gtk_css_value_compute (specified, id, provider, (GtkCssStyle *)style, parent_style, NULL);
if (gtk_css_value_contains_variables (specified)) if (gtk_css_value_contains_variables (specified))
original_value = specified; original_value = specified;
else else
original_value = NULL; original_value = NULL;
} }
else if (context->parent_style && _gtk_css_style_property_is_inherit (_gtk_css_style_property_lookup_by_id (id))) else if (parent_style && _gtk_css_style_property_is_inherit (_gtk_css_style_property_lookup_by_id (id)))
{ {
GtkCssValue *parent_original_value; GtkCssValue *parent_original_value;
/* Just take the style from the parent */ /* Just take the style from the parent */
value = gtk_css_value_ref (gtk_css_style_get_value (context->parent_style, id)); value = _gtk_css_value_ref (gtk_css_style_get_value (parent_style, id));
parent_original_value = gtk_css_style_get_original_value (context->parent_style, id); parent_original_value = gtk_css_style_get_original_value (parent_style, id);
if (parent_original_value) if (parent_original_value)
original_value = parent_original_value; original_value = parent_original_value;
@@ -1075,7 +1055,7 @@ gtk_css_static_style_compute_value (GtkCssStaticStyle *style,
} }
else else
{ {
value = _gtk_css_initial_value_new_compute (id, context); value = _gtk_css_initial_value_new_compute (id, provider, (GtkCssStyle *)style, parent_style);
original_value = NULL; original_value = NULL;
} }
+9 -6
View File
@@ -35,11 +35,14 @@ gtk_css_value_string_free (GtkCssValue *value)
} }
static GtkCssValue * static GtkCssValue *
gtk_css_value_string_compute (GtkCssValue *value, gtk_css_value_string_compute (GtkCssValue *value,
guint property_id, guint property_id,
GtkCssComputeContext *context) GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssVariableSet *variables)
{ {
return gtk_css_value_ref (value); return _gtk_css_value_ref (value);
} }
static gboolean static gboolean
@@ -148,7 +151,7 @@ _gtk_css_string_value_new_take (char *string)
{ {
GtkCssValue *result; GtkCssValue *result;
result = gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_STRING); result = _gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_STRING);
result->string = string; result->string = string;
result->is_computed = TRUE; result->is_computed = TRUE;
@@ -189,7 +192,7 @@ _gtk_css_ident_value_new_take (char *ident)
{ {
GtkCssValue *result; GtkCssValue *result;
result = gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_IDENT); result = _gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_IDENT);
result->string = ident; result->string = ident;
result->is_computed = TRUE; result->is_computed = TRUE;
+10 -8
View File
@@ -367,7 +367,7 @@ gtk_css_style_print (GtkCssStyle *style,
value = gtk_css_style_get_value (style, i); value = gtk_css_style_get_value (style, i);
g_string_append_printf (string, "%*s%s: ", indent, "", name); g_string_append_printf (string, "%*s%s: ", indent, "", name);
gtk_css_value_print (value, string); _gtk_css_value_print (value, string);
g_string_append_c (string, ';'); g_string_append_c (string, ';');
if (section) if (section)
@@ -683,7 +683,7 @@ gtk_css_style_get_pango_attributes (GtkCssStyle *style)
} }
/* letter-spacing */ /* letter-spacing */
letter_spacing = gtk_css_number_value_get (style->font->letter_spacing, 100); letter_spacing = _gtk_css_number_value_get (style->font->letter_spacing, 100);
if (letter_spacing != 0) if (letter_spacing != 0)
{ {
attrs = add_pango_attr (attrs, pango_attr_letter_spacing_new (letter_spacing * PANGO_SCALE)); attrs = add_pango_attr (attrs, pango_attr_letter_spacing_new (letter_spacing * PANGO_SCALE));
@@ -781,13 +781,13 @@ gtk_css_style_get_pango_font (GtkCssStyle *style)
} }
v = style->core->font_size; v = style->core->font_size;
pango_font_description_set_absolute_size (description, round (gtk_css_number_value_get (v, 100) * PANGO_SCALE)); pango_font_description_set_absolute_size (description, round (_gtk_css_number_value_get (v, 100) * PANGO_SCALE));
v = style->font->font_style; v = style->font->font_style;
pango_font_description_set_style (description, _gtk_css_font_style_value_get (v)); pango_font_description_set_style (description, _gtk_css_font_style_value_get (v));
v = style->font->font_weight; v = style->font->font_weight;
pango_font_description_set_weight (description, gtk_css_number_value_get (v, 100)); pango_font_description_set_weight (description, _gtk_css_number_value_get (v, 100));
v = style->font->font_stretch; v = style->font->font_stretch;
pango_font_description_set_stretch (description, _gtk_css_font_stretch_value_get (v)); pango_font_description_set_stretch (description, _gtk_css_font_stretch_value_get (v));
@@ -860,9 +860,10 @@ GtkCssValues *gtk_css_values_ref (GtkCssValues *values)
static void static void
gtk_css_values_free (GtkCssValues *values) gtk_css_values_free (GtkCssValues *values)
{ {
int i;
GtkCssValue **v = GET_VALUES (values); GtkCssValue **v = GET_VALUES (values);
for (int i = 0; i < N_VALUES (values->type); i++) for (i = 0; i < N_VALUES (values->type); i++)
{ {
if (v[i]) if (v[i])
gtk_css_value_unref (v[i]); gtk_css_value_unref (v[i]);
@@ -887,13 +888,14 @@ gtk_css_values_copy (GtkCssValues *values)
{ {
GtkCssValues *copy; GtkCssValues *copy;
GtkCssValue **v, **v2; GtkCssValue **v, **v2;
int i;
copy = gtk_css_values_new (TYPE_INDEX (values->type)); copy = gtk_css_values_new (TYPE_INDEX(values->type));
v = GET_VALUES (values); v = GET_VALUES (values);
v2 = GET_VALUES (copy); v2 = GET_VALUES (copy);
for (int i = 0; i < N_VALUES (values->type); i++) for (i = 0; i < N_VALUES (values->type); i++)
{ {
if (v[i]) if (v[i])
v2[i] = gtk_css_value_ref (v[i]); v2[i] = gtk_css_value_ref (v[i]);
@@ -907,7 +909,7 @@ gtk_css_values_new (GtkCssValuesType type)
{ {
GtkCssValues *values; GtkCssValues *values;
values = (GtkCssValues *) g_malloc0 (VALUES_SIZE (type)); values = (GtkCssValues *)g_malloc0 (VALUES_SIZE(type));
values->ref_count = 1; values->ref_count = 1;
values->type = type; values->type = type;
+2 -2
View File
@@ -186,12 +186,12 @@ gtk_css_style_change_print (GtkCssStyleChange *change,
g_string_append_printf (string, "%s: ", name); g_string_append_printf (string, "%s: ", name);
value = gtk_css_style_get_value (old, i); value = gtk_css_style_get_value (old, i);
gtk_css_value_print (value, string); _gtk_css_value_print (value, string);
g_string_append (string, "\n"); g_string_append (string, "\n");
g_string_append_printf (string, "%s: ", name); g_string_append_printf (string, "%s: ", name);
value = gtk_css_style_get_value (new, i); value = gtk_css_style_get_value (new, i);
gtk_css_value_print (value, string); _gtk_css_value_print (value, string);
g_string_append (string, "\n"); g_string_append (string, "\n");
} }
} }
-11
View File
@@ -81,7 +81,6 @@ struct _GtkCssValues {
struct _GtkCssCoreValues { struct _GtkCssCoreValues {
GtkCssValues base; GtkCssValues base;
GtkCssValue *color; GtkCssValue *color;
GtkCssValue *dpi; GtkCssValue *dpi;
GtkCssValue *font_size; GtkCssValue *font_size;
@@ -90,7 +89,6 @@ struct _GtkCssCoreValues {
struct _GtkCssBackgroundValues { struct _GtkCssBackgroundValues {
GtkCssValues base; GtkCssValues base;
GtkCssValue *background_color; GtkCssValue *background_color;
GtkCssValue *box_shadow; GtkCssValue *box_shadow;
GtkCssValue *background_clip; GtkCssValue *background_clip;
@@ -104,7 +102,6 @@ struct _GtkCssBackgroundValues {
struct _GtkCssBorderValues { struct _GtkCssBorderValues {
GtkCssValues base; GtkCssValues base;
GtkCssValue *border_top_style; GtkCssValue *border_top_style;
GtkCssValue *border_top_width; GtkCssValue *border_top_width;
GtkCssValue *border_left_style; GtkCssValue *border_left_style;
@@ -129,7 +126,6 @@ struct _GtkCssBorderValues {
struct _GtkCssIconValues { struct _GtkCssIconValues {
GtkCssValues base; GtkCssValues base;
GtkCssValue *icon_size; GtkCssValue *icon_size;
GtkCssValue *icon_shadow; GtkCssValue *icon_shadow;
GtkCssValue *icon_style; GtkCssValue *icon_style;
@@ -138,7 +134,6 @@ struct _GtkCssIconValues {
struct _GtkCssOutlineValues { struct _GtkCssOutlineValues {
GtkCssValues base; GtkCssValues base;
GtkCssValue *outline_style; GtkCssValue *outline_style;
GtkCssValue *outline_width; GtkCssValue *outline_width;
GtkCssValue *outline_offset; GtkCssValue *outline_offset;
@@ -147,7 +142,6 @@ struct _GtkCssOutlineValues {
struct _GtkCssFontValues { struct _GtkCssFontValues {
GtkCssValues base; GtkCssValues base;
GtkCssValue *font_family; GtkCssValue *font_family;
GtkCssValue *font_style; GtkCssValue *font_style;
GtkCssValue *font_weight; GtkCssValue *font_weight;
@@ -163,7 +157,6 @@ struct _GtkCssFontValues {
struct _GtkCssFontVariantValues { struct _GtkCssFontVariantValues {
GtkCssValues base; GtkCssValues base;
GtkCssValue *text_decoration_line; GtkCssValue *text_decoration_line;
GtkCssValue *text_decoration_color; // NULL if currentColor GtkCssValue *text_decoration_color; // NULL if currentColor
GtkCssValue *text_decoration_style; GtkCssValue *text_decoration_style;
@@ -179,7 +172,6 @@ struct _GtkCssFontVariantValues {
struct _GtkCssAnimationValues { struct _GtkCssAnimationValues {
GtkCssValues base; GtkCssValues base;
GtkCssValue *animation_name; GtkCssValue *animation_name;
GtkCssValue *animation_duration; GtkCssValue *animation_duration;
GtkCssValue *animation_timing_function; GtkCssValue *animation_timing_function;
@@ -192,7 +184,6 @@ struct _GtkCssAnimationValues {
struct _GtkCssTransitionValues { struct _GtkCssTransitionValues {
GtkCssValues base; GtkCssValues base;
GtkCssValue *transition_property; GtkCssValue *transition_property;
GtkCssValue *transition_duration; GtkCssValue *transition_duration;
GtkCssValue *transition_timing_function; GtkCssValue *transition_timing_function;
@@ -201,7 +192,6 @@ struct _GtkCssTransitionValues {
struct _GtkCssSizeValues { struct _GtkCssSizeValues {
GtkCssValues base; GtkCssValues base;
GtkCssValue *margin_top; GtkCssValue *margin_top;
GtkCssValue *margin_left; GtkCssValue *margin_left;
GtkCssValue *margin_bottom; GtkCssValue *margin_bottom;
@@ -217,7 +207,6 @@ struct _GtkCssSizeValues {
struct _GtkCssOtherValues { struct _GtkCssOtherValues {
GtkCssValues base; GtkCssValues base;
GtkCssValue *icon_source; GtkCssValue *icon_source;
GtkCssValue *icon_transform; GtkCssValue *icon_transform;
GtkCssValue *icon_filter; GtkCssValue *icon_filter;
+89 -88
View File
@@ -84,7 +84,7 @@ gtk_css_style_property_register (const char * name,
node->parse_value = parse_value; node->parse_value = parse_value;
gtk_css_value_unref (initial_value); _gtk_css_value_unref (initial_value);
g_assert (_gtk_css_style_property_get_id (node) == expected_id); g_assert (_gtk_css_style_property_get_id (node) == expected_id);
} }
@@ -95,7 +95,7 @@ static GtkCssValue *
color_parse (GtkCssStyleProperty *property, color_parse (GtkCssStyleProperty *property,
GtkCssParser *parser) GtkCssParser *parser)
{ {
return gtk_css_color_value_parse (parser); return _gtk_css_color_value_parse (parser);
} }
static GtkCssValue * static GtkCssValue *
@@ -163,12 +163,12 @@ font_weight_parse (GtkCssStyleProperty *property,
value = gtk_css_font_weight_value_try_parse (parser); value = gtk_css_font_weight_value_try_parse (parser);
if (value == NULL) if (value == NULL)
{ {
value = gtk_css_number_value_parse (parser, GTK_CSS_PARSE_NUMBER | GTK_CSS_POSITIVE_ONLY); value = _gtk_css_number_value_parse (parser, GTK_CSS_PARSE_NUMBER | GTK_CSS_POSITIVE_ONLY);
if (value == NULL) if (value == NULL)
return NULL; return NULL;
if (gtk_css_number_value_get (value, 100) < 1 || if (_gtk_css_number_value_get (value, 100) < 1 ||
gtk_css_number_value_get (value, 100) > 1000) _gtk_css_number_value_get (value, 100) > 1000)
{ {
gtk_css_parser_error_value (parser, "Font weight values must be between 1 and 1000"); gtk_css_parser_error_value (parser, "Font weight values must be between 1 and 1000");
g_clear_pointer (&value, gtk_css_value_unref); g_clear_pointer (&value, gtk_css_value_unref);
@@ -242,7 +242,7 @@ static GtkCssValue *
opacity_parse (GtkCssStyleProperty *property, opacity_parse (GtkCssStyleProperty *property,
GtkCssParser *parser) GtkCssParser *parser)
{ {
return gtk_css_number_value_parse (parser, GTK_CSS_PARSE_NUMBER); return _gtk_css_number_value_parse (parser, GTK_CSS_PARSE_NUMBER);
} }
static GtkCssValue * static GtkCssValue *
@@ -285,10 +285,10 @@ static GtkCssValue *
icon_size_parse (GtkCssStyleProperty *property, icon_size_parse (GtkCssStyleProperty *property,
GtkCssParser *parser) GtkCssParser *parser)
{ {
return gtk_css_number_value_parse (parser, return _gtk_css_number_value_parse (parser,
GTK_CSS_PARSE_LENGTH GTK_CSS_PARSE_LENGTH
| GTK_CSS_PARSE_PERCENT | GTK_CSS_PARSE_PERCENT
| GTK_CSS_POSITIVE_ONLY); | GTK_CSS_POSITIVE_ONLY);
} }
static GtkCssValue * static GtkCssValue *
@@ -314,7 +314,7 @@ static GtkCssValue *
parse_letter_spacing (GtkCssStyleProperty *property, parse_letter_spacing (GtkCssStyleProperty *property,
GtkCssParser *parser) GtkCssParser *parser)
{ {
return gtk_css_number_value_parse (parser, GTK_CSS_PARSE_LENGTH); return _gtk_css_number_value_parse (parser, GTK_CSS_PARSE_LENGTH);
} }
static gboolean static gboolean
@@ -597,7 +597,7 @@ static GtkCssValue *
dpi_parse (GtkCssStyleProperty *property, dpi_parse (GtkCssStyleProperty *property,
GtkCssParser *parser) GtkCssParser *parser)
{ {
return gtk_css_number_value_parse (parser, GTK_CSS_PARSE_NUMBER); return _gtk_css_number_value_parse (parser, GTK_CSS_PARSE_NUMBER);
} }
GtkCssValue * GtkCssValue *
@@ -609,10 +609,10 @@ gtk_css_font_size_value_parse (GtkCssParser *parser)
if (value) if (value)
return value; return value;
return gtk_css_number_value_parse (parser, return _gtk_css_number_value_parse (parser,
GTK_CSS_PARSE_LENGTH GTK_CSS_PARSE_LENGTH
| GTK_CSS_PARSE_PERCENT | GTK_CSS_PARSE_PERCENT
| GTK_CSS_POSITIVE_ONLY); | GTK_CSS_POSITIVE_ONLY);
} }
static GtkCssValue * static GtkCssValue *
@@ -626,8 +626,8 @@ static GtkCssValue *
outline_parse (GtkCssStyleProperty *property, outline_parse (GtkCssStyleProperty *property,
GtkCssParser *parser) GtkCssParser *parser)
{ {
return gtk_css_number_value_parse (parser, return _gtk_css_number_value_parse (parser,
GTK_CSS_PARSE_LENGTH); GTK_CSS_PARSE_LENGTH);
} }
static GtkCssValue * static GtkCssValue *
@@ -674,9 +674,9 @@ static GtkCssValue *
minmax_parse (GtkCssStyleProperty *property, minmax_parse (GtkCssStyleProperty *property,
GtkCssParser *parser) GtkCssParser *parser)
{ {
return gtk_css_number_value_parse (parser, return _gtk_css_number_value_parse (parser,
GTK_CSS_PARSE_LENGTH GTK_CSS_PARSE_LENGTH
| GTK_CSS_POSITIVE_ONLY); | GTK_CSS_POSITIVE_ONLY);
} }
static GtkCssValue * static GtkCssValue *
@@ -705,7 +705,7 @@ transition_property_parse (GtkCssStyleProperty *property,
static GtkCssValue * static GtkCssValue *
transition_time_parse_one (GtkCssParser *parser) transition_time_parse_one (GtkCssParser *parser)
{ {
return gtk_css_number_value_parse (parser, GTK_CSS_PARSE_TIME); return _gtk_css_number_value_parse (parser, GTK_CSS_PARSE_TIME);
} }
static GtkCssValue * static GtkCssValue *
@@ -726,9 +726,9 @@ static GtkCssValue *
iteration_count_parse_one (GtkCssParser *parser) iteration_count_parse_one (GtkCssParser *parser)
{ {
if (gtk_css_parser_try_ident (parser, "infinite")) if (gtk_css_parser_try_ident (parser, "infinite"))
return gtk_css_number_value_new (HUGE_VAL, GTK_CSS_NUMBER); return _gtk_css_number_value_new (HUGE_VAL, GTK_CSS_NUMBER);
return gtk_css_number_value_parse (parser, GTK_CSS_PARSE_NUMBER | GTK_CSS_POSITIVE_ONLY); return _gtk_css_number_value_parse (parser, GTK_CSS_PARSE_NUMBER | GTK_CSS_POSITIVE_ONLY);
} }
static GtkCssValue * static GtkCssValue *
@@ -742,25 +742,26 @@ static GtkCssValue *
parse_margin (GtkCssStyleProperty *property, parse_margin (GtkCssStyleProperty *property,
GtkCssParser *parser) GtkCssParser *parser)
{ {
return gtk_css_number_value_parse (parser, GTK_CSS_PARSE_LENGTH); return _gtk_css_number_value_parse (parser,
GTK_CSS_PARSE_LENGTH);
} }
static GtkCssValue * static GtkCssValue *
parse_padding (GtkCssStyleProperty *property, parse_padding (GtkCssStyleProperty *property,
GtkCssParser *parser) GtkCssParser *parser)
{ {
return gtk_css_number_value_parse (parser, return _gtk_css_number_value_parse (parser,
GTK_CSS_POSITIVE_ONLY GTK_CSS_POSITIVE_ONLY
| GTK_CSS_PARSE_LENGTH); | GTK_CSS_PARSE_LENGTH);
} }
static GtkCssValue * static GtkCssValue *
parse_border_width (GtkCssStyleProperty *property, parse_border_width (GtkCssStyleProperty *property,
GtkCssParser *parser) GtkCssParser *parser)
{ {
return gtk_css_number_value_parse (parser, return _gtk_css_number_value_parse (parser,
GTK_CSS_POSITIVE_ONLY GTK_CSS_POSITIVE_ONLY
| GTK_CSS_PARSE_LENGTH); | GTK_CSS_PARSE_LENGTH);
} }
static GtkCssValue * static GtkCssValue *
@@ -853,7 +854,7 @@ _gtk_css_style_property_init_properties (void)
GTK_STYLE_PROPERTY_INHERIT | GTK_STYLE_PROPERTY_ANIMATED, GTK_STYLE_PROPERTY_INHERIT | GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_SIZE | GTK_CSS_AFFECTS_TEXT_SIZE, GTK_CSS_AFFECTS_SIZE | GTK_CSS_AFFECTS_TEXT_SIZE,
dpi_parse, dpi_parse,
gtk_css_number_value_new (96.0, GTK_CSS_NUMBER)); _gtk_css_number_value_new (96.0, GTK_CSS_NUMBER));
gtk_css_style_property_register ("font-size", gtk_css_style_property_register ("font-size",
GTK_CSS_PROPERTY_FONT_SIZE, GTK_CSS_PROPERTY_FONT_SIZE,
GTK_STYLE_PROPERTY_INHERIT | GTK_STYLE_PROPERTY_ANIMATED, GTK_STYLE_PROPERTY_INHERIT | GTK_STYLE_PROPERTY_ANIMATED,
@@ -894,7 +895,7 @@ _gtk_css_style_property_init_properties (void)
GTK_STYLE_PROPERTY_INHERIT | GTK_STYLE_PROPERTY_ANIMATED, GTK_STYLE_PROPERTY_INHERIT | GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_TEXT_SIZE, GTK_CSS_AFFECTS_TEXT_SIZE,
font_weight_parse, font_weight_parse,
gtk_css_number_value_new (PANGO_WEIGHT_NORMAL, GTK_CSS_NUMBER)); _gtk_css_number_value_new (PANGO_WEIGHT_NORMAL, GTK_CSS_NUMBER));
gtk_css_style_property_register ("font-stretch", gtk_css_style_property_register ("font-stretch",
GTK_CSS_PROPERTY_FONT_STRETCH, GTK_CSS_PROPERTY_FONT_STRETCH,
GTK_STYLE_PROPERTY_INHERIT, GTK_STYLE_PROPERTY_INHERIT,
@@ -907,7 +908,7 @@ _gtk_css_style_property_init_properties (void)
GTK_STYLE_PROPERTY_INHERIT | GTK_STYLE_PROPERTY_ANIMATED, GTK_STYLE_PROPERTY_INHERIT | GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_TEXT_ATTRS | GTK_CSS_AFFECTS_TEXT_SIZE, GTK_CSS_AFFECTS_TEXT_ATTRS | GTK_CSS_AFFECTS_TEXT_SIZE,
parse_letter_spacing, parse_letter_spacing,
gtk_css_number_value_new (0.0, GTK_CSS_PX)); _gtk_css_number_value_new (0.0, GTK_CSS_PX));
gtk_css_style_property_register ("text-decoration-line", gtk_css_style_property_register ("text-decoration-line",
GTK_CSS_PROPERTY_TEXT_DECORATION_LINE, GTK_CSS_PROPERTY_TEXT_DECORATION_LINE,
@@ -920,7 +921,7 @@ _gtk_css_style_property_init_properties (void)
GTK_STYLE_PROPERTY_ANIMATED, GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_TEXT_ATTRS, GTK_CSS_AFFECTS_TEXT_ATTRS,
color_parse, color_parse,
gtk_css_color_value_new_current_color ()); _gtk_css_color_value_new_current_color ());
gtk_css_style_property_register ("text-decoration-style", gtk_css_style_property_register ("text-decoration-style",
GTK_CSS_PROPERTY_TEXT_DECORATION_STYLE, GTK_CSS_PROPERTY_TEXT_DECORATION_STYLE,
0, 0,
@@ -994,49 +995,49 @@ _gtk_css_style_property_init_properties (void)
GTK_STYLE_PROPERTY_ANIMATED, GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_SIZE, GTK_CSS_AFFECTS_SIZE,
parse_margin, parse_margin,
gtk_css_number_value_new (0.0, GTK_CSS_PX)); _gtk_css_number_value_new (0.0, GTK_CSS_PX));
gtk_css_style_property_register ("margin-left", gtk_css_style_property_register ("margin-left",
GTK_CSS_PROPERTY_MARGIN_LEFT, GTK_CSS_PROPERTY_MARGIN_LEFT,
GTK_STYLE_PROPERTY_ANIMATED, GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_SIZE, GTK_CSS_AFFECTS_SIZE,
parse_margin, parse_margin,
gtk_css_number_value_new (0.0, GTK_CSS_PX)); _gtk_css_number_value_new (0.0, GTK_CSS_PX));
gtk_css_style_property_register ("margin-bottom", gtk_css_style_property_register ("margin-bottom",
GTK_CSS_PROPERTY_MARGIN_BOTTOM, GTK_CSS_PROPERTY_MARGIN_BOTTOM,
GTK_STYLE_PROPERTY_ANIMATED, GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_SIZE, GTK_CSS_AFFECTS_SIZE,
parse_margin, parse_margin,
gtk_css_number_value_new (0.0, GTK_CSS_PX)); _gtk_css_number_value_new (0.0, GTK_CSS_PX));
gtk_css_style_property_register ("margin-right", gtk_css_style_property_register ("margin-right",
GTK_CSS_PROPERTY_MARGIN_RIGHT, GTK_CSS_PROPERTY_MARGIN_RIGHT,
GTK_STYLE_PROPERTY_ANIMATED, GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_SIZE, GTK_CSS_AFFECTS_SIZE,
parse_margin, parse_margin,
gtk_css_number_value_new (0.0, GTK_CSS_PX)); _gtk_css_number_value_new (0.0, GTK_CSS_PX));
gtk_css_style_property_register ("padding-top", gtk_css_style_property_register ("padding-top",
GTK_CSS_PROPERTY_PADDING_TOP, GTK_CSS_PROPERTY_PADDING_TOP,
GTK_STYLE_PROPERTY_ANIMATED, GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_SIZE, GTK_CSS_AFFECTS_SIZE,
parse_padding, parse_padding,
gtk_css_number_value_new (0.0, GTK_CSS_PX)); _gtk_css_number_value_new (0.0, GTK_CSS_PX));
gtk_css_style_property_register ("padding-left", gtk_css_style_property_register ("padding-left",
GTK_CSS_PROPERTY_PADDING_LEFT, GTK_CSS_PROPERTY_PADDING_LEFT,
GTK_STYLE_PROPERTY_ANIMATED, GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_SIZE, GTK_CSS_AFFECTS_SIZE,
parse_padding, parse_padding,
gtk_css_number_value_new (0.0, GTK_CSS_PX)); _gtk_css_number_value_new (0.0, GTK_CSS_PX));
gtk_css_style_property_register ("padding-bottom", gtk_css_style_property_register ("padding-bottom",
GTK_CSS_PROPERTY_PADDING_BOTTOM, GTK_CSS_PROPERTY_PADDING_BOTTOM,
GTK_STYLE_PROPERTY_ANIMATED, GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_SIZE, GTK_CSS_AFFECTS_SIZE,
parse_padding, parse_padding,
gtk_css_number_value_new (0.0, GTK_CSS_PX)); _gtk_css_number_value_new (0.0, GTK_CSS_PX));
gtk_css_style_property_register ("padding-right", gtk_css_style_property_register ("padding-right",
GTK_CSS_PROPERTY_PADDING_RIGHT, GTK_CSS_PROPERTY_PADDING_RIGHT,
GTK_STYLE_PROPERTY_ANIMATED, GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_SIZE, GTK_CSS_AFFECTS_SIZE,
parse_padding, parse_padding,
gtk_css_number_value_new (0.0, GTK_CSS_PX)); _gtk_css_number_value_new (0.0, GTK_CSS_PX));
/* IMPORTANT: the border-width properties must come after border-style properties, /* IMPORTANT: the border-width properties must come after border-style properties,
* they depend on them for their value computation. * they depend on them for their value computation.
*/ */
@@ -1051,7 +1052,7 @@ _gtk_css_style_property_init_properties (void)
GTK_STYLE_PROPERTY_ANIMATED, GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_BORDER | GTK_CSS_AFFECTS_SIZE, GTK_CSS_AFFECTS_BORDER | GTK_CSS_AFFECTS_SIZE,
parse_border_width, parse_border_width,
gtk_css_number_value_new (0.0, GTK_CSS_PX)); _gtk_css_number_value_new (0.0, GTK_CSS_PX));
gtk_css_style_property_register ("border-left-style", gtk_css_style_property_register ("border-left-style",
GTK_CSS_PROPERTY_BORDER_LEFT_STYLE, GTK_CSS_PROPERTY_BORDER_LEFT_STYLE,
0, 0,
@@ -1063,7 +1064,7 @@ _gtk_css_style_property_init_properties (void)
GTK_STYLE_PROPERTY_ANIMATED, GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_BORDER | GTK_CSS_AFFECTS_SIZE, GTK_CSS_AFFECTS_BORDER | GTK_CSS_AFFECTS_SIZE,
parse_border_width, parse_border_width,
gtk_css_number_value_new (0.0, GTK_CSS_PX)); _gtk_css_number_value_new (0.0, GTK_CSS_PX));
gtk_css_style_property_register ("border-bottom-style", gtk_css_style_property_register ("border-bottom-style",
GTK_CSS_PROPERTY_BORDER_BOTTOM_STYLE, GTK_CSS_PROPERTY_BORDER_BOTTOM_STYLE,
0, 0,
@@ -1075,7 +1076,7 @@ _gtk_css_style_property_init_properties (void)
GTK_STYLE_PROPERTY_ANIMATED, GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_BORDER | GTK_CSS_AFFECTS_SIZE, GTK_CSS_AFFECTS_BORDER | GTK_CSS_AFFECTS_SIZE,
parse_border_width, parse_border_width,
gtk_css_number_value_new (0.0, GTK_CSS_PX)); _gtk_css_number_value_new (0.0, GTK_CSS_PX));
gtk_css_style_property_register ("border-right-style", gtk_css_style_property_register ("border-right-style",
GTK_CSS_PROPERTY_BORDER_RIGHT_STYLE, GTK_CSS_PROPERTY_BORDER_RIGHT_STYLE,
0, 0,
@@ -1087,36 +1088,36 @@ _gtk_css_style_property_init_properties (void)
GTK_STYLE_PROPERTY_ANIMATED, GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_BORDER | GTK_CSS_AFFECTS_SIZE, GTK_CSS_AFFECTS_BORDER | GTK_CSS_AFFECTS_SIZE,
parse_border_width, parse_border_width,
gtk_css_number_value_new (0.0, GTK_CSS_PX)); _gtk_css_number_value_new (0.0, GTK_CSS_PX));
gtk_css_style_property_register ("border-top-left-radius", gtk_css_style_property_register ("border-top-left-radius",
GTK_CSS_PROPERTY_BORDER_TOP_LEFT_RADIUS, GTK_CSS_PROPERTY_BORDER_TOP_LEFT_RADIUS,
GTK_STYLE_PROPERTY_ANIMATED, GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_BACKGROUND | GTK_CSS_AFFECTS_BORDER, GTK_CSS_AFFECTS_BACKGROUND | GTK_CSS_AFFECTS_BORDER,
border_corner_radius_value_parse, border_corner_radius_value_parse,
_gtk_css_corner_value_new (gtk_css_number_value_new (0, GTK_CSS_PX), _gtk_css_corner_value_new (_gtk_css_number_value_new (0, GTK_CSS_PX),
gtk_css_number_value_new (0, GTK_CSS_PX))); _gtk_css_number_value_new (0, GTK_CSS_PX)));
gtk_css_style_property_register ("border-top-right-radius", gtk_css_style_property_register ("border-top-right-radius",
GTK_CSS_PROPERTY_BORDER_TOP_RIGHT_RADIUS, GTK_CSS_PROPERTY_BORDER_TOP_RIGHT_RADIUS,
GTK_STYLE_PROPERTY_ANIMATED, GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_BACKGROUND | GTK_CSS_AFFECTS_BORDER, GTK_CSS_AFFECTS_BACKGROUND | GTK_CSS_AFFECTS_BORDER,
border_corner_radius_value_parse, border_corner_radius_value_parse,
_gtk_css_corner_value_new (gtk_css_number_value_new (0, GTK_CSS_PX), _gtk_css_corner_value_new (_gtk_css_number_value_new (0, GTK_CSS_PX),
gtk_css_number_value_new (0, GTK_CSS_PX))); _gtk_css_number_value_new (0, GTK_CSS_PX)));
gtk_css_style_property_register ("border-bottom-right-radius", gtk_css_style_property_register ("border-bottom-right-radius",
GTK_CSS_PROPERTY_BORDER_BOTTOM_RIGHT_RADIUS, GTK_CSS_PROPERTY_BORDER_BOTTOM_RIGHT_RADIUS,
GTK_STYLE_PROPERTY_ANIMATED, GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_BACKGROUND | GTK_CSS_AFFECTS_BORDER, GTK_CSS_AFFECTS_BACKGROUND | GTK_CSS_AFFECTS_BORDER,
border_corner_radius_value_parse, border_corner_radius_value_parse,
_gtk_css_corner_value_new (gtk_css_number_value_new (0, GTK_CSS_PX), _gtk_css_corner_value_new (_gtk_css_number_value_new (0, GTK_CSS_PX),
gtk_css_number_value_new (0, GTK_CSS_PX))); _gtk_css_number_value_new (0, GTK_CSS_PX)));
gtk_css_style_property_register ("border-bottom-left-radius", gtk_css_style_property_register ("border-bottom-left-radius",
GTK_CSS_PROPERTY_BORDER_BOTTOM_LEFT_RADIUS, GTK_CSS_PROPERTY_BORDER_BOTTOM_LEFT_RADIUS,
GTK_STYLE_PROPERTY_ANIMATED, GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_BACKGROUND | GTK_CSS_AFFECTS_BORDER, GTK_CSS_AFFECTS_BACKGROUND | GTK_CSS_AFFECTS_BORDER,
border_corner_radius_value_parse, border_corner_radius_value_parse,
_gtk_css_corner_value_new (gtk_css_number_value_new (0, GTK_CSS_PX), _gtk_css_corner_value_new (_gtk_css_number_value_new (0, GTK_CSS_PX),
gtk_css_number_value_new (0, GTK_CSS_PX))); _gtk_css_number_value_new (0, GTK_CSS_PX)));
gtk_css_style_property_register ("outline-style", gtk_css_style_property_register ("outline-style",
GTK_CSS_PROPERTY_OUTLINE_STYLE, GTK_CSS_PROPERTY_OUTLINE_STYLE,
@@ -1129,13 +1130,13 @@ _gtk_css_style_property_init_properties (void)
GTK_STYLE_PROPERTY_ANIMATED, GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_OUTLINE, GTK_CSS_AFFECTS_OUTLINE,
parse_border_width, parse_border_width,
gtk_css_number_value_new (0.0, GTK_CSS_PX)); _gtk_css_number_value_new (0.0, GTK_CSS_PX));
gtk_css_style_property_register ("outline-offset", gtk_css_style_property_register ("outline-offset",
GTK_CSS_PROPERTY_OUTLINE_OFFSET, GTK_CSS_PROPERTY_OUTLINE_OFFSET,
GTK_STYLE_PROPERTY_ANIMATED, GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_OUTLINE, GTK_CSS_AFFECTS_OUTLINE,
outline_parse, outline_parse,
gtk_css_number_value_new (0.0, GTK_CSS_PX)); _gtk_css_number_value_new (0.0, GTK_CSS_PX));
gtk_css_style_property_register ("background-clip", gtk_css_style_property_register ("background-clip",
GTK_CSS_PROPERTY_BACKGROUND_CLIP, GTK_CSS_PROPERTY_BACKGROUND_CLIP,
0, 0,
@@ -1159,39 +1160,39 @@ _gtk_css_style_property_init_properties (void)
GTK_STYLE_PROPERTY_ANIMATED, GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_BACKGROUND, GTK_CSS_AFFECTS_BACKGROUND,
background_position_parse, background_position_parse,
_gtk_css_position_value_new (gtk_css_number_value_new (0, GTK_CSS_PERCENT), _gtk_css_position_value_new (_gtk_css_number_value_new (0, GTK_CSS_PERCENT),
gtk_css_number_value_new (0, GTK_CSS_PERCENT))); _gtk_css_number_value_new (0, GTK_CSS_PERCENT)));
gtk_css_style_property_register ("border-top-color", gtk_css_style_property_register ("border-top-color",
GTK_CSS_PROPERTY_BORDER_TOP_COLOR, GTK_CSS_PROPERTY_BORDER_TOP_COLOR,
GTK_STYLE_PROPERTY_ANIMATED, GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_BORDER, GTK_CSS_AFFECTS_BORDER,
color_parse, color_parse,
gtk_css_color_value_new_current_color ()); _gtk_css_color_value_new_current_color ());
gtk_css_style_property_register ("border-right-color", gtk_css_style_property_register ("border-right-color",
GTK_CSS_PROPERTY_BORDER_RIGHT_COLOR, GTK_CSS_PROPERTY_BORDER_RIGHT_COLOR,
GTK_STYLE_PROPERTY_ANIMATED, GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_BORDER, GTK_CSS_AFFECTS_BORDER,
color_parse, color_parse,
gtk_css_color_value_new_current_color ()); _gtk_css_color_value_new_current_color ());
gtk_css_style_property_register ("border-bottom-color", gtk_css_style_property_register ("border-bottom-color",
GTK_CSS_PROPERTY_BORDER_BOTTOM_COLOR, GTK_CSS_PROPERTY_BORDER_BOTTOM_COLOR,
GTK_STYLE_PROPERTY_ANIMATED, GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_BORDER, GTK_CSS_AFFECTS_BORDER,
color_parse, color_parse,
gtk_css_color_value_new_current_color ()); _gtk_css_color_value_new_current_color ());
gtk_css_style_property_register ("border-left-color", gtk_css_style_property_register ("border-left-color",
GTK_CSS_PROPERTY_BORDER_LEFT_COLOR, GTK_CSS_PROPERTY_BORDER_LEFT_COLOR,
GTK_STYLE_PROPERTY_ANIMATED, GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_BORDER, GTK_CSS_AFFECTS_BORDER,
color_parse, color_parse,
gtk_css_color_value_new_current_color ()); _gtk_css_color_value_new_current_color ());
gtk_css_style_property_register ("outline-color", gtk_css_style_property_register ("outline-color",
GTK_CSS_PROPERTY_OUTLINE_COLOR, GTK_CSS_PROPERTY_OUTLINE_COLOR,
GTK_STYLE_PROPERTY_ANIMATED, GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_OUTLINE, GTK_CSS_AFFECTS_OUTLINE,
color_parse, color_parse,
gtk_css_color_value_new_current_color ()); _gtk_css_color_value_new_current_color ());
gtk_css_style_property_register ("background-repeat", gtk_css_style_property_register ("background-repeat",
GTK_CSS_PROPERTY_BACKGROUND_REPEAT, GTK_CSS_PROPERTY_BACKGROUND_REPEAT,
@@ -1233,19 +1234,19 @@ _gtk_css_style_property_init_properties (void)
0, 0,
GTK_CSS_AFFECTS_BORDER, GTK_CSS_AFFECTS_BORDER,
border_image_slice_parse, border_image_slice_parse,
_gtk_css_border_value_new (gtk_css_number_value_new (100, GTK_CSS_PERCENT), _gtk_css_border_value_new (_gtk_css_number_value_new (100, GTK_CSS_PERCENT),
gtk_css_number_value_new (100, GTK_CSS_PERCENT), _gtk_css_number_value_new (100, GTK_CSS_PERCENT),
gtk_css_number_value_new (100, GTK_CSS_PERCENT), _gtk_css_number_value_new (100, GTK_CSS_PERCENT),
gtk_css_number_value_new (100, GTK_CSS_PERCENT))); _gtk_css_number_value_new (100, GTK_CSS_PERCENT)));
gtk_css_style_property_register ("border-image-width", gtk_css_style_property_register ("border-image-width",
GTK_CSS_PROPERTY_BORDER_IMAGE_WIDTH, GTK_CSS_PROPERTY_BORDER_IMAGE_WIDTH,
0, 0,
GTK_CSS_AFFECTS_BORDER, GTK_CSS_AFFECTS_BORDER,
border_image_width_parse, border_image_width_parse,
_gtk_css_border_value_new (gtk_css_number_value_new (1, GTK_CSS_NUMBER), _gtk_css_border_value_new (_gtk_css_number_value_new (1, GTK_CSS_NUMBER),
gtk_css_number_value_new (1, GTK_CSS_NUMBER), _gtk_css_number_value_new (1, GTK_CSS_NUMBER),
gtk_css_number_value_new (1, GTK_CSS_NUMBER), _gtk_css_number_value_new (1, GTK_CSS_NUMBER),
gtk_css_number_value_new (1, GTK_CSS_NUMBER))); _gtk_css_number_value_new (1, GTK_CSS_NUMBER)));
gtk_css_style_property_register ("-gtk-icon-source", gtk_css_style_property_register ("-gtk-icon-source",
GTK_CSS_PROPERTY_ICON_SOURCE, GTK_CSS_PROPERTY_ICON_SOURCE,
@@ -1258,7 +1259,7 @@ _gtk_css_style_property_init_properties (void)
GTK_STYLE_PROPERTY_INHERIT | GTK_STYLE_PROPERTY_ANIMATED, GTK_STYLE_PROPERTY_INHERIT | GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_SIZE | GTK_CSS_AFFECTS_ICON_SIZE, GTK_CSS_AFFECTS_SIZE | GTK_CSS_AFFECTS_ICON_SIZE,
icon_size_parse, icon_size_parse,
gtk_css_number_value_new (16, GTK_CSS_PX)); _gtk_css_number_value_new (16, GTK_CSS_PX));
gtk_css_style_property_register ("-gtk-icon-shadow", gtk_css_style_property_register ("-gtk-icon-shadow",
GTK_CSS_PROPERTY_ICON_SHADOW, GTK_CSS_PROPERTY_ICON_SHADOW,
GTK_STYLE_PROPERTY_INHERIT | GTK_STYLE_PROPERTY_ANIMATED, GTK_STYLE_PROPERTY_INHERIT | GTK_STYLE_PROPERTY_ANIMATED,
@@ -1288,8 +1289,8 @@ _gtk_css_style_property_init_properties (void)
GTK_STYLE_PROPERTY_ANIMATED, GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_SIZE, GTK_CSS_AFFECTS_SIZE,
border_spacing_value_parse, border_spacing_value_parse,
_gtk_css_position_value_new (gtk_css_number_value_new (0, GTK_CSS_PX), _gtk_css_position_value_new (_gtk_css_number_value_new (0, GTK_CSS_PX),
gtk_css_number_value_new (0, GTK_CSS_PX))); _gtk_css_number_value_new (0, GTK_CSS_PX)));
gtk_css_style_property_register ("transform", gtk_css_style_property_register ("transform",
GTK_CSS_PROPERTY_TRANSFORM, GTK_CSS_PROPERTY_TRANSFORM,
@@ -1302,20 +1303,20 @@ _gtk_css_style_property_init_properties (void)
GTK_STYLE_PROPERTY_ANIMATED, GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_TRANSFORM, GTK_CSS_AFFECTS_TRANSFORM,
transform_origin_parse, transform_origin_parse,
_gtk_css_position_value_new (gtk_css_number_value_new (50, GTK_CSS_PERCENT), _gtk_css_position_value_new (_gtk_css_number_value_new (50, GTK_CSS_PERCENT),
gtk_css_number_value_new (50, GTK_CSS_PERCENT))); _gtk_css_number_value_new (50, GTK_CSS_PERCENT)));
gtk_css_style_property_register ("min-width", gtk_css_style_property_register ("min-width",
GTK_CSS_PROPERTY_MIN_WIDTH, GTK_CSS_PROPERTY_MIN_WIDTH,
GTK_STYLE_PROPERTY_ANIMATED, GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_SIZE, GTK_CSS_AFFECTS_SIZE,
minmax_parse, minmax_parse,
gtk_css_number_value_new (0, GTK_CSS_PX)); _gtk_css_number_value_new (0, GTK_CSS_PX));
gtk_css_style_property_register ("min-height", gtk_css_style_property_register ("min-height",
GTK_CSS_PROPERTY_MIN_HEIGHT, GTK_CSS_PROPERTY_MIN_HEIGHT,
GTK_STYLE_PROPERTY_ANIMATED, GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_SIZE, GTK_CSS_AFFECTS_SIZE,
minmax_parse, minmax_parse,
gtk_css_number_value_new (0, GTK_CSS_PX)); _gtk_css_number_value_new (0, GTK_CSS_PX));
gtk_css_style_property_register ("transition-property", gtk_css_style_property_register ("transition-property",
GTK_CSS_PROPERTY_TRANSITION_PROPERTY, GTK_CSS_PROPERTY_TRANSITION_PROPERTY,
@@ -1328,7 +1329,7 @@ _gtk_css_style_property_init_properties (void)
0, 0,
0, 0,
transition_time_parse, transition_time_parse,
gtk_css_number_value_new (0, GTK_CSS_S)); _gtk_css_number_value_new (0, GTK_CSS_S));
gtk_css_style_property_register ("transition-timing-function", gtk_css_style_property_register ("transition-timing-function",
GTK_CSS_PROPERTY_TRANSITION_TIMING_FUNCTION, GTK_CSS_PROPERTY_TRANSITION_TIMING_FUNCTION,
0, 0,
@@ -1340,7 +1341,7 @@ _gtk_css_style_property_init_properties (void)
0, 0,
0, 0,
transition_time_parse, transition_time_parse,
gtk_css_number_value_new (0, GTK_CSS_S)); _gtk_css_number_value_new (0, GTK_CSS_S));
gtk_css_style_property_register ("animation-name", gtk_css_style_property_register ("animation-name",
GTK_CSS_PROPERTY_ANIMATION_NAME, GTK_CSS_PROPERTY_ANIMATION_NAME,
@@ -1353,7 +1354,7 @@ _gtk_css_style_property_init_properties (void)
0, 0,
0, 0,
transition_time_parse, transition_time_parse,
gtk_css_number_value_new (0, GTK_CSS_S)); _gtk_css_number_value_new (0, GTK_CSS_S));
gtk_css_style_property_register ("animation-timing-function", gtk_css_style_property_register ("animation-timing-function",
GTK_CSS_PROPERTY_ANIMATION_TIMING_FUNCTION, GTK_CSS_PROPERTY_ANIMATION_TIMING_FUNCTION,
0, 0,
@@ -1365,7 +1366,7 @@ _gtk_css_style_property_init_properties (void)
0, 0,
0, 0,
iteration_count_parse, iteration_count_parse,
gtk_css_number_value_new (1, GTK_CSS_NUMBER)); _gtk_css_number_value_new (1, GTK_CSS_NUMBER));
gtk_css_style_property_register ("animation-direction", gtk_css_style_property_register ("animation-direction",
GTK_CSS_PROPERTY_ANIMATION_DIRECTION, GTK_CSS_PROPERTY_ANIMATION_DIRECTION,
0, 0,
@@ -1383,7 +1384,7 @@ _gtk_css_style_property_init_properties (void)
0, 0,
0, 0,
transition_time_parse, transition_time_parse,
gtk_css_number_value_new (0, GTK_CSS_S)); _gtk_css_number_value_new (0, GTK_CSS_S));
gtk_css_style_property_register ("animation-fill-mode", gtk_css_style_property_register ("animation-fill-mode",
GTK_CSS_PROPERTY_ANIMATION_FILL_MODE, GTK_CSS_PROPERTY_ANIMATION_FILL_MODE,
0, 0,
@@ -1396,7 +1397,7 @@ _gtk_css_style_property_init_properties (void)
GTK_STYLE_PROPERTY_ANIMATED, GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_POSTEFFECT, GTK_CSS_AFFECTS_POSTEFFECT,
opacity_parse, opacity_parse,
gtk_css_number_value_new (1, GTK_CSS_NUMBER)); _gtk_css_number_value_new (1, GTK_CSS_NUMBER));
gtk_css_style_property_register ("filter", gtk_css_style_property_register ("filter",
GTK_CSS_PROPERTY_FILTER, GTK_CSS_PROPERTY_FILTER,
GTK_STYLE_PROPERTY_ANIMATED, GTK_STYLE_PROPERTY_ANIMATED,
@@ -1409,13 +1410,13 @@ _gtk_css_style_property_init_properties (void)
GTK_STYLE_PROPERTY_INHERIT | GTK_STYLE_PROPERTY_ANIMATED, GTK_STYLE_PROPERTY_INHERIT | GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_CONTENT, GTK_CSS_AFFECTS_CONTENT,
color_parse, color_parse,
gtk_css_color_value_new_current_color ()); _gtk_css_color_value_new_current_color ());
gtk_css_style_property_register ("-gtk-secondary-caret-color", gtk_css_style_property_register ("-gtk-secondary-caret-color",
GTK_CSS_PROPERTY_SECONDARY_CARET_COLOR, GTK_CSS_PROPERTY_SECONDARY_CARET_COLOR,
GTK_STYLE_PROPERTY_INHERIT | GTK_STYLE_PROPERTY_ANIMATED, GTK_STYLE_PROPERTY_INHERIT | GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_CONTENT, GTK_CSS_AFFECTS_CONTENT,
color_parse, color_parse,
gtk_css_color_value_new_current_color ()); _gtk_css_color_value_new_current_color ());
gtk_css_style_property_register ("font-feature-settings", gtk_css_style_property_register ("font-feature-settings",
GTK_CSS_PROPERTY_FONT_FEATURE_SETTINGS, GTK_CSS_PROPERTY_FONT_FEATURE_SETTINGS,
GTK_STYLE_PROPERTY_INHERIT | GTK_STYLE_PROPERTY_ANIMATED, GTK_STYLE_PROPERTY_INHERIT | GTK_STYLE_PROPERTY_ANIMATED,
@@ -1433,5 +1434,5 @@ _gtk_css_style_property_init_properties (void)
GTK_STYLE_PROPERTY_INHERIT | GTK_STYLE_PROPERTY_ANIMATED, GTK_STYLE_PROPERTY_INHERIT | GTK_STYLE_PROPERTY_ANIMATED,
GTK_CSS_AFFECTS_TEXT_ATTRS | GTK_CSS_AFFECTS_TEXT_SIZE, GTK_CSS_AFFECTS_TEXT_ATTRS | GTK_CSS_AFFECTS_TEXT_SIZE,
parse_line_height, parse_line_height,
gtk_css_value_ref (gtk_css_line_height_value_get_default ())); _gtk_css_value_ref (gtk_css_line_height_value_get_default ()));
} }
+161 -152
View File
@@ -90,33 +90,33 @@ gtk_css_transform_clear (GtkCssTransform *transform)
case GTK_CSS_TRANSFORM_MATRIX: case GTK_CSS_TRANSFORM_MATRIX:
break; break;
case GTK_CSS_TRANSFORM_TRANSLATE: case GTK_CSS_TRANSFORM_TRANSLATE:
gtk_css_value_unref (transform->translate.x); _gtk_css_value_unref (transform->translate.x);
gtk_css_value_unref (transform->translate.y); _gtk_css_value_unref (transform->translate.y);
gtk_css_value_unref (transform->translate.z); _gtk_css_value_unref (transform->translate.z);
break; break;
case GTK_CSS_TRANSFORM_ROTATE: case GTK_CSS_TRANSFORM_ROTATE:
gtk_css_value_unref (transform->rotate.x); _gtk_css_value_unref (transform->rotate.x);
gtk_css_value_unref (transform->rotate.y); _gtk_css_value_unref (transform->rotate.y);
gtk_css_value_unref (transform->rotate.z); _gtk_css_value_unref (transform->rotate.z);
gtk_css_value_unref (transform->rotate.angle); _gtk_css_value_unref (transform->rotate.angle);
break; break;
case GTK_CSS_TRANSFORM_SCALE: case GTK_CSS_TRANSFORM_SCALE:
gtk_css_value_unref (transform->scale.x); _gtk_css_value_unref (transform->scale.x);
gtk_css_value_unref (transform->scale.y); _gtk_css_value_unref (transform->scale.y);
gtk_css_value_unref (transform->scale.z); _gtk_css_value_unref (transform->scale.z);
break; break;
case GTK_CSS_TRANSFORM_SKEW: case GTK_CSS_TRANSFORM_SKEW:
gtk_css_value_unref (transform->skew.x); _gtk_css_value_unref (transform->skew.x);
gtk_css_value_unref (transform->skew.y); _gtk_css_value_unref (transform->skew.y);
break; break;
case GTK_CSS_TRANSFORM_SKEW_X: case GTK_CSS_TRANSFORM_SKEW_X:
gtk_css_value_unref (transform->skew_x.skew); _gtk_css_value_unref (transform->skew_x.skew);
break; break;
case GTK_CSS_TRANSFORM_SKEW_Y: case GTK_CSS_TRANSFORM_SKEW_Y:
gtk_css_value_unref (transform->skew_y.skew); _gtk_css_value_unref (transform->skew_y.skew);
break; break;
case GTK_CSS_TRANSFORM_PERSPECTIVE: case GTK_CSS_TRANSFORM_PERSPECTIVE:
gtk_css_value_unref (transform->perspective.depth); _gtk_css_value_unref (transform->perspective.depth);
break; break;
case GTK_CSS_TRANSFORM_NONE: case GTK_CSS_TRANSFORM_NONE:
default: default:
@@ -135,30 +135,30 @@ gtk_css_transform_init_identity (GtkCssTransform *transform,
graphene_matrix_init_identity (&transform->matrix.matrix); graphene_matrix_init_identity (&transform->matrix.matrix);
break; break;
case GTK_CSS_TRANSFORM_TRANSLATE: case GTK_CSS_TRANSFORM_TRANSLATE:
transform->translate.x = gtk_css_number_value_new (0, GTK_CSS_PX); transform->translate.x = _gtk_css_number_value_new (0, GTK_CSS_PX);
transform->translate.y = gtk_css_number_value_new (0, GTK_CSS_PX); transform->translate.y = _gtk_css_number_value_new (0, GTK_CSS_PX);
transform->translate.z = gtk_css_number_value_new (0, GTK_CSS_PX); transform->translate.z = _gtk_css_number_value_new (0, GTK_CSS_PX);
break; break;
case GTK_CSS_TRANSFORM_ROTATE: case GTK_CSS_TRANSFORM_ROTATE:
transform->rotate.x = gtk_css_number_value_new (0, GTK_CSS_NUMBER); transform->rotate.x = _gtk_css_number_value_new (0, GTK_CSS_NUMBER);
transform->rotate.y = gtk_css_number_value_new (0, GTK_CSS_NUMBER); transform->rotate.y = _gtk_css_number_value_new (0, GTK_CSS_NUMBER);
transform->rotate.z = gtk_css_number_value_new (1, GTK_CSS_NUMBER); transform->rotate.z = _gtk_css_number_value_new (1, GTK_CSS_NUMBER);
transform->rotate.angle = gtk_css_number_value_new (0, GTK_CSS_DEG); transform->rotate.angle = _gtk_css_number_value_new (0, GTK_CSS_DEG);
break; break;
case GTK_CSS_TRANSFORM_SCALE: case GTK_CSS_TRANSFORM_SCALE:
transform->scale.x = gtk_css_number_value_new (1, GTK_CSS_NUMBER); transform->scale.x = _gtk_css_number_value_new (1, GTK_CSS_NUMBER);
transform->scale.y = gtk_css_number_value_new (1, GTK_CSS_NUMBER); transform->scale.y = _gtk_css_number_value_new (1, GTK_CSS_NUMBER);
transform->scale.z = gtk_css_number_value_new (1, GTK_CSS_NUMBER); transform->scale.z = _gtk_css_number_value_new (1, GTK_CSS_NUMBER);
break; break;
case GTK_CSS_TRANSFORM_SKEW: case GTK_CSS_TRANSFORM_SKEW:
transform->skew.x = gtk_css_number_value_new (0, GTK_CSS_DEG); transform->skew.x = _gtk_css_number_value_new (0, GTK_CSS_DEG);
transform->skew.y = gtk_css_number_value_new (0, GTK_CSS_DEG); transform->skew.y = _gtk_css_number_value_new (0, GTK_CSS_DEG);
break; break;
case GTK_CSS_TRANSFORM_SKEW_X: case GTK_CSS_TRANSFORM_SKEW_X:
transform->skew_x.skew = gtk_css_number_value_new (0, GTK_CSS_DEG); transform->skew_x.skew = _gtk_css_number_value_new (0, GTK_CSS_DEG);
break; break;
case GTK_CSS_TRANSFORM_SKEW_Y: case GTK_CSS_TRANSFORM_SKEW_Y:
transform->skew_y.skew = gtk_css_number_value_new (0, GTK_CSS_DEG); transform->skew_y.skew = _gtk_css_number_value_new (0, GTK_CSS_DEG);
break; break;
case GTK_CSS_TRANSFORM_PERSPECTIVE: case GTK_CSS_TRANSFORM_PERSPECTIVE:
return FALSE; return FALSE;
@@ -188,9 +188,9 @@ gtk_css_transform_apply (const GtkCssTransform *transform,
case GTK_CSS_TRANSFORM_TRANSLATE: case GTK_CSS_TRANSFORM_TRANSLATE:
return gsk_transform_translate_3d (next, return gsk_transform_translate_3d (next,
&GRAPHENE_POINT3D_INIT ( &GRAPHENE_POINT3D_INIT (
gtk_css_number_value_get (transform->translate.x, 100), _gtk_css_number_value_get (transform->translate.x, 100),
gtk_css_number_value_get (transform->translate.y, 100), _gtk_css_number_value_get (transform->translate.y, 100),
gtk_css_number_value_get (transform->translate.z, 100) _gtk_css_number_value_get (transform->translate.z, 100)
)); ));
case GTK_CSS_TRANSFORM_ROTATE: case GTK_CSS_TRANSFORM_ROTATE:
@@ -198,41 +198,41 @@ gtk_css_transform_apply (const GtkCssTransform *transform,
graphene_vec3_t axis; graphene_vec3_t axis;
graphene_vec3_init (&axis, graphene_vec3_init (&axis,
gtk_css_number_value_get (transform->rotate.x, 1), _gtk_css_number_value_get (transform->rotate.x, 1),
gtk_css_number_value_get (transform->rotate.y, 1), _gtk_css_number_value_get (transform->rotate.y, 1),
gtk_css_number_value_get (transform->rotate.z, 1)); _gtk_css_number_value_get (transform->rotate.z, 1));
return gsk_transform_rotate_3d (next, return gsk_transform_rotate_3d (next,
gtk_css_number_value_get (transform->rotate.angle, 100), _gtk_css_number_value_get (transform->rotate.angle, 100),
&axis); &axis);
} }
case GTK_CSS_TRANSFORM_SCALE: case GTK_CSS_TRANSFORM_SCALE:
return gsk_transform_scale_3d (next, return gsk_transform_scale_3d (next,
gtk_css_number_value_get (transform->scale.x, 1), _gtk_css_number_value_get (transform->scale.x, 1),
gtk_css_number_value_get (transform->scale.y, 1), _gtk_css_number_value_get (transform->scale.y, 1),
gtk_css_number_value_get (transform->scale.z, 1)); _gtk_css_number_value_get (transform->scale.z, 1));
case GTK_CSS_TRANSFORM_SKEW: case GTK_CSS_TRANSFORM_SKEW:
graphene_matrix_init_skew (&skew, graphene_matrix_init_skew (&skew,
gtk_css_number_value_get (transform->skew.x, 100) / 180.0f * G_PI, _gtk_css_number_value_get (transform->skew.x, 100) / 180.0f * G_PI,
gtk_css_number_value_get (transform->skew.y, 100) / 180.0f * G_PI); _gtk_css_number_value_get (transform->skew.y, 100) / 180.0f * G_PI);
return gsk_transform_matrix (next, &skew); return gsk_transform_matrix (next, &skew);
case GTK_CSS_TRANSFORM_SKEW_X: case GTK_CSS_TRANSFORM_SKEW_X:
graphene_matrix_init_skew (&skew, graphene_matrix_init_skew (&skew,
gtk_css_number_value_get (transform->skew_x.skew, 100) / 180.0f * G_PI, _gtk_css_number_value_get (transform->skew_x.skew, 100) / 180.0f * G_PI,
0); 0);
return gsk_transform_matrix (next, &skew); return gsk_transform_matrix (next, &skew);
case GTK_CSS_TRANSFORM_SKEW_Y: case GTK_CSS_TRANSFORM_SKEW_Y:
graphene_matrix_init_skew (&skew, graphene_matrix_init_skew (&skew,
0, 0,
gtk_css_number_value_get (transform->skew_y.skew, 100) / 180.0f * G_PI); _gtk_css_number_value_get (transform->skew_y.skew, 100) / 180.0f * G_PI);
return gsk_transform_matrix (next, &skew); return gsk_transform_matrix (next, &skew);
case GTK_CSS_TRANSFORM_PERSPECTIVE: case GTK_CSS_TRANSFORM_PERSPECTIVE:
return gsk_transform_perspective (next, return gsk_transform_perspective (next,
gtk_css_number_value_get (transform->perspective.depth, 100)); _gtk_css_number_value_get (transform->perspective.depth, 100));
case GTK_CSS_TRANSFORM_NONE: case GTK_CSS_TRANSFORM_NONE:
default: default:
@@ -273,10 +273,13 @@ gtk_css_value_transform_free (GtkCssValue *value)
/* returns TRUE if dest == src */ /* returns TRUE if dest == src */
static gboolean static gboolean
gtk_css_transform_compute (GtkCssTransform *dest, gtk_css_transform_compute (GtkCssTransform *dest,
GtkCssTransform *src, GtkCssTransform *src,
guint property_id, guint property_id,
GtkCssComputeContext *context) GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssVariableSet *variables)
{ {
dest->type = src->type; dest->type = src->type;
@@ -286,41 +289,41 @@ gtk_css_transform_compute (GtkCssTransform *dest,
memcpy (dest, src, sizeof (GtkCssTransform)); memcpy (dest, src, sizeof (GtkCssTransform));
return TRUE; return TRUE;
case GTK_CSS_TRANSFORM_TRANSLATE: case GTK_CSS_TRANSFORM_TRANSLATE:
dest->translate.x = gtk_css_value_compute (src->translate.x, property_id, context); dest->translate.x = _gtk_css_value_compute (src->translate.x, property_id, provider, style, parent_style, variables);
dest->translate.y = gtk_css_value_compute (src->translate.y, property_id, context); dest->translate.y = _gtk_css_value_compute (src->translate.y, property_id, provider, style, parent_style, variables);
dest->translate.z = gtk_css_value_compute (src->translate.z, property_id, context); dest->translate.z = _gtk_css_value_compute (src->translate.z, property_id, provider, style, parent_style, variables);
return dest->translate.x == src->translate.x return dest->translate.x == src->translate.x
&& dest->translate.y == src->translate.y && dest->translate.y == src->translate.y
&& dest->translate.z == src->translate.z; && dest->translate.z == src->translate.z;
case GTK_CSS_TRANSFORM_ROTATE: case GTK_CSS_TRANSFORM_ROTATE:
dest->rotate.x = gtk_css_value_compute (src->rotate.x, property_id, context); dest->rotate.x = _gtk_css_value_compute (src->rotate.x, property_id, provider, style, parent_style, variables);
dest->rotate.y = gtk_css_value_compute (src->rotate.y, property_id, context); dest->rotate.y = _gtk_css_value_compute (src->rotate.y, property_id, provider, style, parent_style, variables);
dest->rotate.z = gtk_css_value_compute (src->rotate.z, property_id, context); dest->rotate.z = _gtk_css_value_compute (src->rotate.z, property_id, provider, style, parent_style, variables);
dest->rotate.angle = gtk_css_value_compute (src->rotate.angle, property_id, context); dest->rotate.angle = _gtk_css_value_compute (src->rotate.angle, property_id, provider, style, parent_style, variables);
return dest->rotate.x == src->rotate.x return dest->rotate.x == src->rotate.x
&& dest->rotate.y == src->rotate.y && dest->rotate.y == src->rotate.y
&& dest->rotate.z == src->rotate.z && dest->rotate.z == src->rotate.z
&& dest->rotate.angle == src->rotate.angle; && dest->rotate.angle == src->rotate.angle;
case GTK_CSS_TRANSFORM_SCALE: case GTK_CSS_TRANSFORM_SCALE:
dest->scale.x = gtk_css_value_compute (src->scale.x, property_id, context); dest->scale.x = _gtk_css_value_compute (src->scale.x, property_id, provider, style, parent_style, variables);
dest->scale.y = gtk_css_value_compute (src->scale.y, property_id, context); dest->scale.y = _gtk_css_value_compute (src->scale.y, property_id, provider, style, parent_style, variables);
dest->scale.z = gtk_css_value_compute (src->scale.z, property_id, context); dest->scale.z = _gtk_css_value_compute (src->scale.z, property_id, provider, style, parent_style, variables);
return dest->scale.x == src->scale.x return dest->scale.x == src->scale.x
&& dest->scale.y == src->scale.y && dest->scale.y == src->scale.y
&& dest->scale.z == src->scale.z; && dest->scale.z == src->scale.z;
case GTK_CSS_TRANSFORM_SKEW: case GTK_CSS_TRANSFORM_SKEW:
dest->skew.x = gtk_css_value_compute (src->skew.x, property_id, context); dest->skew.x = _gtk_css_value_compute (src->skew.x, property_id, provider, style, parent_style, variables);
dest->skew.y = gtk_css_value_compute (src->skew.y, property_id, context); dest->skew.y = _gtk_css_value_compute (src->skew.y, property_id, provider, style, parent_style, variables);
return dest->skew.x == src->skew.x return dest->skew.x == src->skew.x
&& dest->skew.y == src->skew.y; && dest->skew.y == src->skew.y;
case GTK_CSS_TRANSFORM_SKEW_X: case GTK_CSS_TRANSFORM_SKEW_X:
dest->skew_x.skew = gtk_css_value_compute (src->skew_x.skew, property_id, context); dest->skew_x.skew = _gtk_css_value_compute (src->skew_x.skew, property_id, provider, style, parent_style, variables);
return dest->skew_x.skew == src->skew_x.skew; return dest->skew_x.skew == src->skew_x.skew;
case GTK_CSS_TRANSFORM_SKEW_Y: case GTK_CSS_TRANSFORM_SKEW_Y:
dest->skew_y.skew = gtk_css_value_compute (src->skew_y.skew, property_id, context); dest->skew_y.skew = _gtk_css_value_compute (src->skew_y.skew, property_id, provider, style, parent_style, variables);
return dest->skew_y.skew == src->skew_y.skew; return dest->skew_y.skew == src->skew_y.skew;
case GTK_CSS_TRANSFORM_PERSPECTIVE: case GTK_CSS_TRANSFORM_PERSPECTIVE:
dest->perspective.depth = gtk_css_value_compute (src->perspective.depth, property_id, context); dest->perspective.depth = _gtk_css_value_compute (src->perspective.depth, property_id, provider, style, parent_style, variables);
return dest->perspective.depth == src->perspective.depth; return dest->perspective.depth == src->perspective.depth;
case GTK_CSS_TRANSFORM_NONE: case GTK_CSS_TRANSFORM_NONE:
default: default:
@@ -330,9 +333,12 @@ gtk_css_transform_compute (GtkCssTransform *dest,
} }
static GtkCssValue * static GtkCssValue *
gtk_css_value_transform_compute (GtkCssValue *value, gtk_css_value_transform_compute (GtkCssValue *value,
guint property_id, guint property_id,
GtkCssComputeContext *context) GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssVariableSet *variables)
{ {
GtkCssValue *result; GtkCssValue *result;
gboolean changes; gboolean changes;
@@ -340,7 +346,7 @@ gtk_css_value_transform_compute (GtkCssValue *value,
/* Special case the 99% case of "none" */ /* Special case the 99% case of "none" */
if (gtk_css_transform_value_is_none (value)) if (gtk_css_transform_value_is_none (value))
return gtk_css_value_ref (value); return _gtk_css_value_ref (value);
changes = FALSE; changes = FALSE;
result = gtk_css_transform_value_alloc (value->n_transforms); result = gtk_css_transform_value_alloc (value->n_transforms);
@@ -350,13 +356,16 @@ gtk_css_value_transform_compute (GtkCssValue *value,
changes |= !gtk_css_transform_compute (&result->transforms[i], changes |= !gtk_css_transform_compute (&result->transforms[i],
&value->transforms[i], &value->transforms[i],
property_id, property_id,
context); provider,
style,
parent_style,
variables);
} }
if (!changes) if (!changes)
{ {
gtk_css_value_unref (result); _gtk_css_value_unref (result);
result = gtk_css_value_ref (value); result = _gtk_css_value_ref (value);
} }
return result; return result;
@@ -385,27 +394,27 @@ gtk_css_transform_equal (const GtkCssTransform *transform1,
return TRUE; return TRUE;
} }
case GTK_CSS_TRANSFORM_TRANSLATE: case GTK_CSS_TRANSFORM_TRANSLATE:
return gtk_css_value_equal (transform1->translate.x, transform2->translate.x) return _gtk_css_value_equal (transform1->translate.x, transform2->translate.x)
&& gtk_css_value_equal (transform1->translate.y, transform2->translate.y) && _gtk_css_value_equal (transform1->translate.y, transform2->translate.y)
&& gtk_css_value_equal (transform1->translate.z, transform2->translate.z); && _gtk_css_value_equal (transform1->translate.z, transform2->translate.z);
case GTK_CSS_TRANSFORM_ROTATE: case GTK_CSS_TRANSFORM_ROTATE:
return gtk_css_value_equal (transform1->rotate.x, transform2->rotate.x) return _gtk_css_value_equal (transform1->rotate.x, transform2->rotate.x)
&& gtk_css_value_equal (transform1->rotate.y, transform2->rotate.y) && _gtk_css_value_equal (transform1->rotate.y, transform2->rotate.y)
&& gtk_css_value_equal (transform1->rotate.z, transform2->rotate.z) && _gtk_css_value_equal (transform1->rotate.z, transform2->rotate.z)
&& gtk_css_value_equal (transform1->rotate.angle, transform2->rotate.angle); && _gtk_css_value_equal (transform1->rotate.angle, transform2->rotate.angle);
case GTK_CSS_TRANSFORM_SCALE: case GTK_CSS_TRANSFORM_SCALE:
return gtk_css_value_equal (transform1->scale.x, transform2->scale.x) return _gtk_css_value_equal (transform1->scale.x, transform2->scale.x)
&& gtk_css_value_equal (transform1->scale.y, transform2->scale.y) && _gtk_css_value_equal (transform1->scale.y, transform2->scale.y)
&& gtk_css_value_equal (transform1->scale.z, transform2->scale.z); && _gtk_css_value_equal (transform1->scale.z, transform2->scale.z);
case GTK_CSS_TRANSFORM_SKEW: case GTK_CSS_TRANSFORM_SKEW:
return gtk_css_value_equal (transform1->skew.x, transform2->skew.x) return _gtk_css_value_equal (transform1->skew.x, transform2->skew.x)
&& gtk_css_value_equal (transform1->skew.y, transform2->skew.y); && _gtk_css_value_equal (transform1->skew.y, transform2->skew.y);
case GTK_CSS_TRANSFORM_SKEW_X: case GTK_CSS_TRANSFORM_SKEW_X:
return gtk_css_value_equal (transform1->skew_x.skew, transform2->skew_x.skew); return _gtk_css_value_equal (transform1->skew_x.skew, transform2->skew_x.skew);
case GTK_CSS_TRANSFORM_SKEW_Y: case GTK_CSS_TRANSFORM_SKEW_Y:
return gtk_css_value_equal (transform1->skew_y.skew, transform2->skew_y.skew); return _gtk_css_value_equal (transform1->skew_y.skew, transform2->skew_y.skew);
case GTK_CSS_TRANSFORM_PERSPECTIVE: case GTK_CSS_TRANSFORM_PERSPECTIVE:
return gtk_css_value_equal (transform1->perspective.depth, transform2->perspective.depth); return _gtk_css_value_equal (transform1->perspective.depth, transform2->perspective.depth);
case GTK_CSS_TRANSFORM_NONE: case GTK_CSS_TRANSFORM_NONE:
default: default:
g_assert_not_reached (); g_assert_not_reached ();
@@ -498,30 +507,30 @@ gtk_css_transform_transition (GtkCssTransform *result,
&result->matrix.matrix); &result->matrix.matrix);
break; break;
case GTK_CSS_TRANSFORM_TRANSLATE: case GTK_CSS_TRANSFORM_TRANSLATE:
result->translate.x = gtk_css_value_transition (start->translate.x, end->translate.x, property_id, progress); result->translate.x = _gtk_css_value_transition (start->translate.x, end->translate.x, property_id, progress);
result->translate.y = gtk_css_value_transition (start->translate.y, end->translate.y, property_id, progress); result->translate.y = _gtk_css_value_transition (start->translate.y, end->translate.y, property_id, progress);
result->translate.z = gtk_css_value_transition (start->translate.z, end->translate.z, property_id, progress); result->translate.z = _gtk_css_value_transition (start->translate.z, end->translate.z, property_id, progress);
break; break;
case GTK_CSS_TRANSFORM_ROTATE: case GTK_CSS_TRANSFORM_ROTATE:
result->rotate.x = gtk_css_value_transition (start->rotate.x, end->rotate.x, property_id, progress); result->rotate.x = _gtk_css_value_transition (start->rotate.x, end->rotate.x, property_id, progress);
result->rotate.y = gtk_css_value_transition (start->rotate.y, end->rotate.y, property_id, progress); result->rotate.y = _gtk_css_value_transition (start->rotate.y, end->rotate.y, property_id, progress);
result->rotate.z = gtk_css_value_transition (start->rotate.z, end->rotate.z, property_id, progress); result->rotate.z = _gtk_css_value_transition (start->rotate.z, end->rotate.z, property_id, progress);
result->rotate.angle = gtk_css_value_transition (start->rotate.angle, end->rotate.angle, property_id, progress); result->rotate.angle = _gtk_css_value_transition (start->rotate.angle, end->rotate.angle, property_id, progress);
break; break;
case GTK_CSS_TRANSFORM_SCALE: case GTK_CSS_TRANSFORM_SCALE:
result->scale.x = gtk_css_value_transition (start->scale.x, end->scale.x, property_id, progress); result->scale.x = _gtk_css_value_transition (start->scale.x, end->scale.x, property_id, progress);
result->scale.y = gtk_css_value_transition (start->scale.y, end->scale.y, property_id, progress); result->scale.y = _gtk_css_value_transition (start->scale.y, end->scale.y, property_id, progress);
result->scale.z = gtk_css_value_transition (start->scale.z, end->scale.z, property_id, progress); result->scale.z = _gtk_css_value_transition (start->scale.z, end->scale.z, property_id, progress);
break; break;
case GTK_CSS_TRANSFORM_SKEW: case GTK_CSS_TRANSFORM_SKEW:
result->skew.x = gtk_css_value_transition (start->skew.x, end->skew.x, property_id, progress); result->skew.x = _gtk_css_value_transition (start->skew.x, end->skew.x, property_id, progress);
result->skew.y = gtk_css_value_transition (start->skew.y, end->skew.y, property_id, progress); result->skew.y = _gtk_css_value_transition (start->skew.y, end->skew.y, property_id, progress);
break; break;
case GTK_CSS_TRANSFORM_SKEW_X: case GTK_CSS_TRANSFORM_SKEW_X:
result->skew_x.skew = gtk_css_value_transition (start->skew_x.skew, end->skew_x.skew, property_id, progress); result->skew_x.skew = _gtk_css_value_transition (start->skew_x.skew, end->skew_x.skew, property_id, progress);
break; break;
case GTK_CSS_TRANSFORM_SKEW_Y: case GTK_CSS_TRANSFORM_SKEW_Y:
result->skew_y.skew = gtk_css_value_transition (start->skew_y.skew, end->skew_y.skew, property_id, progress); result->skew_y.skew = _gtk_css_value_transition (start->skew_y.skew, end->skew_y.skew, property_id, progress);
break; break;
case GTK_CSS_TRANSFORM_PERSPECTIVE: case GTK_CSS_TRANSFORM_PERSPECTIVE:
gtk_css_transform_transition_default (result, start, end, property_id, progress); gtk_css_transform_transition_default (result, start, end, property_id, progress);
@@ -545,7 +554,7 @@ gtk_css_value_transform_transition (GtkCssValue *start,
if (gtk_css_transform_value_is_none (start)) if (gtk_css_transform_value_is_none (start))
{ {
if (gtk_css_transform_value_is_none (end)) if (gtk_css_transform_value_is_none (end))
return gtk_css_value_ref (start); return _gtk_css_value_ref (start);
n = 0; n = 0;
} }
@@ -693,67 +702,67 @@ gtk_css_transform_print (const GtkCssTransform *transform,
break; break;
case GTK_CSS_TRANSFORM_TRANSLATE: case GTK_CSS_TRANSFORM_TRANSLATE:
g_string_append (string, "translate3d("); g_string_append (string, "translate3d(");
gtk_css_value_print (transform->translate.x, string); _gtk_css_value_print (transform->translate.x, string);
g_string_append (string, ", "); g_string_append (string, ", ");
gtk_css_value_print (transform->translate.y, string); _gtk_css_value_print (transform->translate.y, string);
g_string_append (string, ", "); g_string_append (string, ", ");
gtk_css_value_print (transform->translate.z, string); _gtk_css_value_print (transform->translate.z, string);
g_string_append (string, ")"); g_string_append (string, ")");
break; break;
case GTK_CSS_TRANSFORM_ROTATE: case GTK_CSS_TRANSFORM_ROTATE:
g_string_append (string, "rotate3d("); g_string_append (string, "rotate3d(");
gtk_css_value_print (transform->rotate.x, string); _gtk_css_value_print (transform->rotate.x, string);
g_string_append (string, ", "); g_string_append (string, ", ");
gtk_css_value_print (transform->rotate.y, string); _gtk_css_value_print (transform->rotate.y, string);
g_string_append (string, ", "); g_string_append (string, ", ");
gtk_css_value_print (transform->rotate.z, string); _gtk_css_value_print (transform->rotate.z, string);
g_string_append (string, ", "); g_string_append (string, ", ");
gtk_css_value_print (transform->rotate.angle, string); _gtk_css_value_print (transform->rotate.angle, string);
g_string_append (string, ")"); g_string_append (string, ")");
break; break;
case GTK_CSS_TRANSFORM_SCALE: case GTK_CSS_TRANSFORM_SCALE:
if (gtk_css_number_value_get (transform->scale.z, 100) == 1) if (_gtk_css_number_value_get (transform->scale.z, 100) == 1)
{ {
g_string_append (string, "scale("); g_string_append (string, "scale(");
gtk_css_value_print (transform->scale.x, string); _gtk_css_value_print (transform->scale.x, string);
if (!gtk_css_value_equal (transform->scale.x, transform->scale.y)) if (!_gtk_css_value_equal (transform->scale.x, transform->scale.y))
{ {
g_string_append (string, ", "); g_string_append (string, ", ");
gtk_css_value_print (transform->scale.y, string); _gtk_css_value_print (transform->scale.y, string);
} }
g_string_append (string, ")"); g_string_append (string, ")");
} }
else else
{ {
g_string_append (string, "scale3d("); g_string_append (string, "scale3d(");
gtk_css_value_print (transform->scale.x, string); _gtk_css_value_print (transform->scale.x, string);
g_string_append (string, ", "); g_string_append (string, ", ");
gtk_css_value_print (transform->scale.y, string); _gtk_css_value_print (transform->scale.y, string);
g_string_append (string, ", "); g_string_append (string, ", ");
gtk_css_value_print (transform->scale.z, string); _gtk_css_value_print (transform->scale.z, string);
g_string_append (string, ")"); g_string_append (string, ")");
} }
break; break;
case GTK_CSS_TRANSFORM_SKEW: case GTK_CSS_TRANSFORM_SKEW:
g_string_append (string, "skew("); g_string_append (string, "skew(");
gtk_css_value_print (transform->skew.x, string); _gtk_css_value_print (transform->skew.x, string);
g_string_append (string, ", "); g_string_append (string, ", ");
gtk_css_value_print (transform->skew.y, string); _gtk_css_value_print (transform->skew.y, string);
g_string_append (string, ")"); g_string_append (string, ")");
break; break;
case GTK_CSS_TRANSFORM_SKEW_X: case GTK_CSS_TRANSFORM_SKEW_X:
g_string_append (string, "skewX("); g_string_append (string, "skewX(");
gtk_css_value_print (transform->skew_x.skew, string); _gtk_css_value_print (transform->skew_x.skew, string);
g_string_append (string, ")"); g_string_append (string, ")");
break; break;
case GTK_CSS_TRANSFORM_SKEW_Y: case GTK_CSS_TRANSFORM_SKEW_Y:
g_string_append (string, "skewY("); g_string_append (string, "skewY(");
gtk_css_value_print (transform->skew_y.skew, string); _gtk_css_value_print (transform->skew_y.skew, string);
g_string_append (string, ")"); g_string_append (string, ")");
break; break;
case GTK_CSS_TRANSFORM_PERSPECTIVE: case GTK_CSS_TRANSFORM_PERSPECTIVE:
g_string_append (string, "perspective("); g_string_append (string, "perspective(");
gtk_css_value_print (transform->perspective.depth, string); _gtk_css_value_print (transform->perspective.depth, string);
g_string_append (string, ")"); g_string_append (string, ")");
break; break;
case GTK_CSS_TRANSFORM_NONE: case GTK_CSS_TRANSFORM_NONE:
@@ -804,7 +813,7 @@ gtk_css_transform_value_alloc (guint n_transforms)
g_return_val_if_fail (n_transforms > 0, NULL); g_return_val_if_fail (n_transforms > 0, NULL);
result = gtk_css_value_alloc (&GTK_CSS_VALUE_TRANSFORM, sizeof (GtkCssValue) + sizeof (GtkCssTransform) * (n_transforms - 1)); result = _gtk_css_value_alloc (&GTK_CSS_VALUE_TRANSFORM, sizeof (GtkCssValue) + sizeof (GtkCssTransform) * (n_transforms - 1));
result->n_transforms = n_transforms; result->n_transforms = n_transforms;
return result; return result;
@@ -813,7 +822,7 @@ gtk_css_transform_value_alloc (guint n_transforms)
GtkCssValue * GtkCssValue *
_gtk_css_transform_value_new_none (void) _gtk_css_transform_value_new_none (void)
{ {
return gtk_css_value_ref (&transform_none_singleton); return _gtk_css_value_ref (&transform_none_singleton);
} }
static gboolean static gboolean
@@ -844,7 +853,7 @@ gtk_css_transform_parse_length (GtkCssParser *parser,
{ {
GtkCssValue **values = data; GtkCssValue **values = data;
values[n] = gtk_css_number_value_parse (parser, GTK_CSS_PARSE_LENGTH); values[n] = _gtk_css_number_value_parse (parser, GTK_CSS_PARSE_LENGTH);
if (values[n] == NULL) if (values[n] == NULL)
return 0; return 0;
@@ -858,7 +867,7 @@ gtk_css_transform_parse_angle (GtkCssParser *parser,
{ {
GtkCssValue **values = data; GtkCssValue **values = data;
values[n] = gtk_css_number_value_parse (parser, GTK_CSS_PARSE_ANGLE); values[n] = _gtk_css_number_value_parse (parser, GTK_CSS_PARSE_ANGLE);
if (values[n] == NULL) if (values[n] == NULL)
return 0; return 0;
@@ -872,7 +881,7 @@ gtk_css_transform_parse_number (GtkCssParser *parser,
{ {
GtkCssValue **values = data; GtkCssValue **values = data;
values[n] = gtk_css_number_value_parse (parser, GTK_CSS_PARSE_NUMBER); values[n] = _gtk_css_number_value_parse (parser, GTK_CSS_PARSE_NUMBER);
if (values[n] == NULL) if (values[n] == NULL)
return 0; return 0;
@@ -889,25 +898,25 @@ gtk_css_transform_parse_rotate3d (GtkCssParser *parser,
switch (n) switch (n)
{ {
case 0: case 0:
transform->rotate.x = gtk_css_number_value_parse (parser, GTK_CSS_PARSE_NUMBER); transform->rotate.x = _gtk_css_number_value_parse (parser, GTK_CSS_PARSE_NUMBER);
if (transform->rotate.x == NULL) if (transform->rotate.x == NULL)
return 0; return 0;
break; break;
case 1: case 1:
transform->rotate.y = gtk_css_number_value_parse (parser, GTK_CSS_PARSE_NUMBER); transform->rotate.y = _gtk_css_number_value_parse (parser, GTK_CSS_PARSE_NUMBER);
if (transform->rotate.y == NULL) if (transform->rotate.y == NULL)
return 0; return 0;
break; break;
case 2: case 2:
transform->rotate.z = gtk_css_number_value_parse (parser, GTK_CSS_PARSE_NUMBER); transform->rotate.z = _gtk_css_number_value_parse (parser, GTK_CSS_PARSE_NUMBER);
if (transform->rotate.z == NULL) if (transform->rotate.z == NULL)
return 0; return 0;
break; break;
case 3: case 3:
transform->rotate.angle = gtk_css_number_value_parse (parser, GTK_CSS_PARSE_ANGLE); transform->rotate.angle = _gtk_css_number_value_parse (parser, GTK_CSS_PARSE_ANGLE);
if (transform->rotate.angle == NULL) if (transform->rotate.angle == NULL)
return 0; return 0;
break; break;
@@ -972,9 +981,9 @@ _gtk_css_transform_value_parse (GtkCssParser *parser)
goto fail; goto fail;
transform.type = GTK_CSS_TRANSFORM_ROTATE; transform.type = GTK_CSS_TRANSFORM_ROTATE;
transform.rotate.x = gtk_css_number_value_new (0, GTK_CSS_NUMBER); transform.rotate.x = _gtk_css_number_value_new (0, GTK_CSS_NUMBER);
transform.rotate.y = gtk_css_number_value_new (0, GTK_CSS_NUMBER); transform.rotate.y = _gtk_css_number_value_new (0, GTK_CSS_NUMBER);
transform.rotate.z = gtk_css_number_value_new (1, GTK_CSS_NUMBER); transform.rotate.z = _gtk_css_number_value_new (1, GTK_CSS_NUMBER);
computed = computed && gtk_css_value_is_computed (transform.rotate.angle); computed = computed && gtk_css_value_is_computed (transform.rotate.angle);
} }
else if (gtk_css_parser_has_function (parser, "rotate3d")) else if (gtk_css_parser_has_function (parser, "rotate3d"))
@@ -1000,9 +1009,9 @@ _gtk_css_transform_value_parse (GtkCssParser *parser)
goto fail; goto fail;
transform.type = GTK_CSS_TRANSFORM_ROTATE; transform.type = GTK_CSS_TRANSFORM_ROTATE;
transform.rotate.x = gtk_css_number_value_new (1, GTK_CSS_NUMBER); transform.rotate.x = _gtk_css_number_value_new (1, GTK_CSS_NUMBER);
transform.rotate.y = gtk_css_number_value_new (0, GTK_CSS_NUMBER); transform.rotate.y = _gtk_css_number_value_new (0, GTK_CSS_NUMBER);
transform.rotate.z = gtk_css_number_value_new (0, GTK_CSS_NUMBER); transform.rotate.z = _gtk_css_number_value_new (0, GTK_CSS_NUMBER);
computed = computed && gtk_css_value_is_computed (transform.rotate.angle); computed = computed && gtk_css_value_is_computed (transform.rotate.angle);
} }
else if (gtk_css_parser_has_function (parser, "rotateY")) else if (gtk_css_parser_has_function (parser, "rotateY"))
@@ -1011,9 +1020,9 @@ _gtk_css_transform_value_parse (GtkCssParser *parser)
goto fail; goto fail;
transform.type = GTK_CSS_TRANSFORM_ROTATE; transform.type = GTK_CSS_TRANSFORM_ROTATE;
transform.rotate.x = gtk_css_number_value_new (0, GTK_CSS_NUMBER); transform.rotate.x = _gtk_css_number_value_new (0, GTK_CSS_NUMBER);
transform.rotate.y = gtk_css_number_value_new (1, GTK_CSS_NUMBER); transform.rotate.y = _gtk_css_number_value_new (1, GTK_CSS_NUMBER);
transform.rotate.z = gtk_css_number_value_new (0, GTK_CSS_NUMBER); transform.rotate.z = _gtk_css_number_value_new (0, GTK_CSS_NUMBER);
computed = computed && gtk_css_value_is_computed (transform.rotate.angle); computed = computed && gtk_css_value_is_computed (transform.rotate.angle);
} }
else if (gtk_css_parser_has_function (parser, "scale")) else if (gtk_css_parser_has_function (parser, "scale"))
@@ -1033,7 +1042,7 @@ _gtk_css_transform_value_parse (GtkCssParser *parser)
transform.scale.y = values[1]; transform.scale.y = values[1];
else else
transform.scale.y = gtk_css_value_ref (values[0]); transform.scale.y = gtk_css_value_ref (values[0]);
transform.scale.z = gtk_css_number_value_new (1, GTK_CSS_NUMBER); transform.scale.z = _gtk_css_number_value_new (1, GTK_CSS_NUMBER);
computed = computed && gtk_css_value_is_computed (transform.scale.x) && computed = computed && gtk_css_value_is_computed (transform.scale.x) &&
gtk_css_value_is_computed (transform.scale.y); gtk_css_value_is_computed (transform.scale.y);
} }
@@ -1063,8 +1072,8 @@ _gtk_css_transform_value_parse (GtkCssParser *parser)
goto fail; goto fail;
transform.type = GTK_CSS_TRANSFORM_SCALE; transform.type = GTK_CSS_TRANSFORM_SCALE;
transform.scale.y = gtk_css_number_value_new (1, GTK_CSS_NUMBER); transform.scale.y = _gtk_css_number_value_new (1, GTK_CSS_NUMBER);
transform.scale.z = gtk_css_number_value_new (1, GTK_CSS_NUMBER); transform.scale.z = _gtk_css_number_value_new (1, GTK_CSS_NUMBER);
computed = computed && gtk_css_value_is_computed (transform.scale.x); computed = computed && gtk_css_value_is_computed (transform.scale.x);
} }
else if (gtk_css_parser_has_function (parser, "scaleY")) else if (gtk_css_parser_has_function (parser, "scaleY"))
@@ -1073,8 +1082,8 @@ _gtk_css_transform_value_parse (GtkCssParser *parser)
goto fail; goto fail;
transform.type = GTK_CSS_TRANSFORM_SCALE; transform.type = GTK_CSS_TRANSFORM_SCALE;
transform.scale.x = gtk_css_number_value_new (1, GTK_CSS_NUMBER); transform.scale.x = _gtk_css_number_value_new (1, GTK_CSS_NUMBER);
transform.scale.z = gtk_css_number_value_new (1, GTK_CSS_NUMBER); transform.scale.z = _gtk_css_number_value_new (1, GTK_CSS_NUMBER);
computed = computed && gtk_css_value_is_computed (transform.scale.y); computed = computed && gtk_css_value_is_computed (transform.scale.y);
} }
else if (gtk_css_parser_has_function (parser, "scaleZ")) else if (gtk_css_parser_has_function (parser, "scaleZ"))
@@ -1083,8 +1092,8 @@ _gtk_css_transform_value_parse (GtkCssParser *parser)
goto fail; goto fail;
transform.type = GTK_CSS_TRANSFORM_SCALE; transform.type = GTK_CSS_TRANSFORM_SCALE;
transform.scale.x = gtk_css_number_value_new (1, GTK_CSS_NUMBER); transform.scale.x = _gtk_css_number_value_new (1, GTK_CSS_NUMBER);
transform.scale.y = gtk_css_number_value_new (1, GTK_CSS_NUMBER); transform.scale.y = _gtk_css_number_value_new (1, GTK_CSS_NUMBER);
computed = computed && gtk_css_value_is_computed (transform.scale.z); computed = computed && gtk_css_value_is_computed (transform.scale.z);
} }
else if (gtk_css_parser_has_function (parser, "skew")) else if (gtk_css_parser_has_function (parser, "skew"))
@@ -1136,8 +1145,8 @@ _gtk_css_transform_value_parse (GtkCssParser *parser)
if (values[1]) if (values[1])
transform.translate.y = values[1]; transform.translate.y = values[1];
else else
transform.translate.y = gtk_css_number_value_new (0, GTK_CSS_PX); transform.translate.y = _gtk_css_number_value_new (0, GTK_CSS_PX);
transform.translate.z = gtk_css_number_value_new (0, GTK_CSS_PX); transform.translate.z = _gtk_css_number_value_new (0, GTK_CSS_PX);
computed = computed && gtk_css_value_is_computed (transform.translate.x) && computed = computed && gtk_css_value_is_computed (transform.translate.x) &&
gtk_css_value_is_computed (transform.translate.y); gtk_css_value_is_computed (transform.translate.y);
} }
@@ -1167,8 +1176,8 @@ _gtk_css_transform_value_parse (GtkCssParser *parser)
goto fail; goto fail;
transform.type = GTK_CSS_TRANSFORM_TRANSLATE; transform.type = GTK_CSS_TRANSFORM_TRANSLATE;
transform.translate.y = gtk_css_number_value_new (0, GTK_CSS_PX); transform.translate.y = _gtk_css_number_value_new (0, GTK_CSS_PX);
transform.translate.z = gtk_css_number_value_new (0, GTK_CSS_PX); transform.translate.z = _gtk_css_number_value_new (0, GTK_CSS_PX);
computed = computed && gtk_css_value_is_computed (transform.translate.x); computed = computed && gtk_css_value_is_computed (transform.translate.x);
} }
else if (gtk_css_parser_has_function (parser, "translateY")) else if (gtk_css_parser_has_function (parser, "translateY"))
@@ -1177,8 +1186,8 @@ _gtk_css_transform_value_parse (GtkCssParser *parser)
goto fail; goto fail;
transform.type = GTK_CSS_TRANSFORM_TRANSLATE; transform.type = GTK_CSS_TRANSFORM_TRANSLATE;
transform.translate.x = gtk_css_number_value_new (0, GTK_CSS_PX); transform.translate.x = _gtk_css_number_value_new (0, GTK_CSS_PX);
transform.translate.z = gtk_css_number_value_new (0, GTK_CSS_PX); transform.translate.z = _gtk_css_number_value_new (0, GTK_CSS_PX);
computed = computed && gtk_css_value_is_computed (transform.translate.y); computed = computed && gtk_css_value_is_computed (transform.translate.y);
} }
else if (gtk_css_parser_has_function (parser, "translateZ")) else if (gtk_css_parser_has_function (parser, "translateZ"))
@@ -1187,8 +1196,8 @@ _gtk_css_transform_value_parse (GtkCssParser *parser)
goto fail; goto fail;
transform.type = GTK_CSS_TRANSFORM_TRANSLATE; transform.type = GTK_CSS_TRANSFORM_TRANSLATE;
transform.translate.x = gtk_css_number_value_new (0, GTK_CSS_PX); transform.translate.x = _gtk_css_number_value_new (0, GTK_CSS_PX);
transform.translate.y = gtk_css_number_value_new (0, GTK_CSS_PX); transform.translate.y = _gtk_css_number_value_new (0, GTK_CSS_PX);
computed = computed && gtk_css_value_is_computed (transform.translate.z); computed = computed && gtk_css_value_is_computed (transform.translate.z);
} }
else else
+10 -10
View File
@@ -57,22 +57,22 @@ gtk_css_transition_apply_values (GtkStyleAnimation *style_animation,
state = gtk_progress_tracker_get_state (&transition->tracker); state = gtk_progress_tracker_get_state (&transition->tracker);
if (state == GTK_PROGRESS_STATE_BEFORE) if (state == GTK_PROGRESS_STATE_BEFORE)
value = gtk_css_value_ref (transition->start); value = _gtk_css_value_ref (transition->start);
else if (state == GTK_PROGRESS_STATE_DURING) else if (state == GTK_PROGRESS_STATE_DURING)
{ {
progress = gtk_progress_tracker_get_progress (&transition->tracker, FALSE); progress = gtk_progress_tracker_get_progress (&transition->tracker, FALSE);
progress = _gtk_css_ease_value_transform (transition->ease, progress); progress = _gtk_css_ease_value_transform (transition->ease, progress);
value = gtk_css_value_transition (transition->start, value = _gtk_css_value_transition (transition->start,
end, end,
transition->property, transition->property,
progress); progress);
} }
else else
return; return;
if (value == NULL) if (value == NULL)
value = gtk_css_value_ref (end); value = _gtk_css_value_ref (end);
gtk_css_animated_style_set_animated_value (style, transition->property, value); gtk_css_animated_style_set_animated_value (style, transition->property, value);
} }
@@ -124,8 +124,8 @@ gtk_css_transition_advance (GtkStyleAnimation *style_animation,
transition->parent.ref_count = 1; transition->parent.ref_count = 1;
transition->property = source->property; transition->property = source->property;
transition->start = gtk_css_value_ref (source->start); transition->start = _gtk_css_value_ref (source->start);
transition->ease = gtk_css_value_ref (source->ease); transition->ease = _gtk_css_value_ref (source->ease);
gtk_progress_tracker_init_copy (&source->tracker, &transition->tracker); gtk_progress_tracker_init_copy (&source->tracker, &transition->tracker);
gtk_progress_tracker_advance_frame (&transition->tracker, timestamp); gtk_progress_tracker_advance_frame (&transition->tracker, timestamp);
@@ -151,8 +151,8 @@ _gtk_css_transition_new (guint property,
transition->parent.ref_count = 1; transition->parent.ref_count = 1;
transition->property = property; transition->property = property;
transition->start = gtk_css_value_ref (start); transition->start = _gtk_css_value_ref (start);
transition->ease = gtk_css_value_ref (ease); transition->ease = _gtk_css_value_ref (ease);
gtk_progress_tracker_start (&transition->tracker, duration_us, delay_us, 1.0); gtk_progress_tracker_start (&transition->tracker, duration_us, delay_us, 1.0);
gtk_progress_tracker_advance_frame (&transition->tracker, timestamp); gtk_progress_tracker_advance_frame (&transition->tracker, timestamp);
transition->finished = gtk_progress_tracker_get_state (&transition->tracker) == GTK_PROGRESS_STATE_AFTER; transition->finished = gtk_progress_tracker_get_state (&transition->tracker) == GTK_PROGRESS_STATE_AFTER;
-25
View File
@@ -281,31 +281,6 @@ enum { /*< skip >*/
GTK_CSS_PROPERTY_CUSTOM, GTK_CSS_PROPERTY_CUSTOM,
}; };
enum {
GTK_CSS_SHORTHAND_PROPERTY_FONT,
GTK_CSS_SHORTHAND_PROPERTY_MARGIN,
GTK_CSS_SHORTHAND_PROPERTY_PADDING,
GTK_CSS_SHORTHAND_PROPERTY_BORDER_WIDTH,
GTK_CSS_SHORTHAND_PROPERTY_BORDER_RADIUS,
GTK_CSS_SHORTHAND_PROPERTY_BORDER_COLOR,
GTK_CSS_SHORTHAND_PROPERTY_BORDER_STYLE,
GTK_CSS_SHORTHAND_PROPERTY_BORDER_IMAGE,
GTK_CSS_SHORTHAND_PROPERTY_BORDER_TOP,
GTK_CSS_SHORTHAND_PROPERTY_BORDER_RIGHT,
GTK_CSS_SHORTHAND_PROPERTY_BORDER_BOTTOM,
GTK_CSS_SHORTHAND_PROPERTY_BORDER_LEFT,
GTK_CSS_SHORTHAND_PROPERTY_BORDER,
GTK_CSS_SHORTHAND_PROPERTY_OUTLINE,
GTK_CSS_SHORTHAND_PROPERTY_BACKGROUND,
GTK_CSS_SHORTHAND_PROPERTY_TRANSITION,
GTK_CSS_SHORTHAND_PROPERTY_ANIMATION,
GTK_CSS_SHORTHAND_PROPERTY_TEXT_DECORATION,
GTK_CSS_SHORTHAND_PROPERTY_FONT_VARIANT,
GTK_CSS_SHORTHAND_PROPERTY_ALL,
/* add more */
GTK_CSS_SHORTHAND_PROPERTY_N_PROPERTIES,
};
typedef enum /*< skip >*/ { typedef enum /*< skip >*/ {
GTK_CSS_AREA_BORDER_BOX, GTK_CSS_AREA_BORDER_BOX,
GTK_CSS_AREA_PADDING_BOX, GTK_CSS_AREA_PADDING_BOX,
+13 -5
View File
@@ -35,9 +35,12 @@ gtk_css_value_unset_free (GtkCssValue *value)
} }
static GtkCssValue * static GtkCssValue *
gtk_css_value_unset_compute (GtkCssValue *value, gtk_css_value_unset_compute (GtkCssValue *value,
guint property_id, guint property_id,
GtkCssComputeContext *context) GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssVariableSet *variables)
{ {
GtkCssStyleProperty *property; GtkCssStyleProperty *property;
GtkCssValue *unset_value; GtkCssValue *unset_value;
@@ -49,7 +52,12 @@ gtk_css_value_unset_compute (GtkCssValue *value,
else else
unset_value = _gtk_css_initial_value_get (); unset_value = _gtk_css_initial_value_get ();
return gtk_css_value_compute (unset_value, property_id, context); return _gtk_css_value_compute (unset_value,
property_id,
provider,
style,
parent_style,
variables);
} }
static gboolean static gboolean
@@ -91,5 +99,5 @@ static GtkCssValue unset = { &GTK_CSS_VALUE_UNSET, 1 };
GtkCssValue * GtkCssValue *
_gtk_css_unset_value_new (void) _gtk_css_unset_value_new (void)
{ {
return gtk_css_value_ref (&unset); return _gtk_css_value_ref (&unset);
} }
+43 -29
View File
@@ -27,7 +27,7 @@ struct _GtkCssValue {
GTK_CSS_VALUE_BASE GTK_CSS_VALUE_BASE
}; };
G_DEFINE_BOXED_TYPE (GtkCssValue, gtk_css_value, gtk_css_value_ref, gtk_css_value_unref) G_DEFINE_BOXED_TYPE (GtkCssValue, _gtk_css_value, _gtk_css_value_ref, _gtk_css_value_unref)
#undef CSS_VALUE_ACCOUNTING #undef CSS_VALUE_ACCOUNTING
@@ -137,8 +137,8 @@ get_accounting_data (const char *class)
#endif #endif
GtkCssValue * GtkCssValue *
gtk_css_value_alloc (const GtkCssValueClass *klass, _gtk_css_value_alloc (const GtkCssValueClass *klass,
gsize size) gsize size)
{ {
GtkCssValue *value; GtkCssValue *value;
@@ -161,7 +161,7 @@ gtk_css_value_alloc (const GtkCssValueClass *klass,
} }
GtkCssValue * GtkCssValue *
(gtk_css_value_ref) (GtkCssValue *value) gtk_css_value_ref (GtkCssValue *value)
{ {
gtk_internal_return_val_if_fail (value != NULL, NULL); gtk_internal_return_val_if_fail (value != NULL, NULL);
@@ -171,7 +171,7 @@ GtkCssValue *
} }
void void
(gtk_css_value_unref) (GtkCssValue *value) gtk_css_value_unref (GtkCssValue *value)
{ {
if (value == NULL) if (value == NULL)
return; return;
@@ -193,14 +193,13 @@ void
} }
/** /**
* gtk_css_value_compute: * _gtk_css_value_compute:
* @value: the value to compute from * @value: the value to compute from
* @property_id: the ID of the property to compute * @property_id: the ID of the property to compute
* @provider: Style provider for looking up extra information * @provider: Style provider for looking up extra information
* @style: Style to compute for * @style: Style to compute for
* @parent_style: parent style to use for inherited values * @parent_style: parent style to use for inherited values
* @variables: an additional set of variables to use along with @style * @variables: an additional set of variables to use along with @style
* @shorthands: (nullable): Already computed values for shorthands
* *
* Converts the specified @value into the computed value for the CSS * Converts the specified @value into the computed value for the CSS
* property given by @property_id using the information in @context. * property given by @property_id using the information in @context.
@@ -210,23 +209,26 @@ void
* Returns: the computed value * Returns: the computed value
**/ **/
GtkCssValue * GtkCssValue *
gtk_css_value_compute (GtkCssValue *value, _gtk_css_value_compute (GtkCssValue *value,
guint property_id, guint property_id,
GtkCssComputeContext *context) GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssVariableSet *variables)
{ {
if (gtk_css_value_is_computed (value)) if (gtk_css_value_is_computed (value))
return gtk_css_value_ref (value); return _gtk_css_value_ref (value);
#ifdef CSS_VALUE_ACCOUNTING #ifdef CSS_VALUE_ACCOUNTING
get_accounting_data (value->class->type_name)->computed++; get_accounting_data (value->class->type_name)->computed++;
#endif #endif
return value->class->compute (value, property_id, context); return value->class->compute (value, property_id, provider, style, parent_style, variables);
} }
gboolean gboolean
gtk_css_value_equal (const GtkCssValue *value1, _gtk_css_value_equal (const GtkCssValue *value1,
const GtkCssValue *value2) const GtkCssValue *value2)
{ {
gtk_internal_return_val_if_fail (value1 != NULL, FALSE); gtk_internal_return_val_if_fail (value1 != NULL, FALSE);
gtk_internal_return_val_if_fail (value2 != NULL, FALSE); gtk_internal_return_val_if_fail (value2 != NULL, FALSE);
@@ -241,8 +243,8 @@ gtk_css_value_equal (const GtkCssValue *value1,
} }
gboolean gboolean
gtk_css_value_equal0 (const GtkCssValue *value1, _gtk_css_value_equal0 (const GtkCssValue *value1,
const GtkCssValue *value2) const GtkCssValue *value2)
{ {
/* Includes both values being NULL */ /* Includes both values being NULL */
if (value1 == value2) if (value1 == value2)
@@ -251,14 +253,14 @@ gtk_css_value_equal0 (const GtkCssValue *value1,
if (value1 == NULL || value2 == NULL) if (value1 == NULL || value2 == NULL)
return FALSE; return FALSE;
return gtk_css_value_equal (value1, value2); return _gtk_css_value_equal (value1, value2);
} }
GtkCssValue * GtkCssValue *
gtk_css_value_transition (GtkCssValue *start, _gtk_css_value_transition (GtkCssValue *start,
GtkCssValue *end, GtkCssValue *end,
guint property_id, guint property_id,
double progress) double progress)
{ {
gtk_internal_return_val_if_fail (start != NULL, NULL); gtk_internal_return_val_if_fail (start != NULL, NULL);
gtk_internal_return_val_if_fail (end != NULL, NULL); gtk_internal_return_val_if_fail (end != NULL, NULL);
@@ -267,13 +269,13 @@ gtk_css_value_transition (GtkCssValue *start,
return NULL; return NULL;
if (progress == 0) if (progress == 0)
return gtk_css_value_ref (start); return _gtk_css_value_ref (start);
if (progress == 1) if (progress == 1)
return gtk_css_value_ref (end); return _gtk_css_value_ref (end);
if (start == end) if (start == end)
return gtk_css_value_ref (start); return _gtk_css_value_ref (start);
#ifdef CSS_VALUE_ACCOUNTING #ifdef CSS_VALUE_ACCOUNTING
get_accounting_data (start->class->type_name)->transitioned++; get_accounting_data (start->class->type_name)->transitioned++;
@@ -283,19 +285,19 @@ gtk_css_value_transition (GtkCssValue *start,
} }
char * char *
gtk_css_value_to_string (const GtkCssValue *value) _gtk_css_value_to_string (const GtkCssValue *value)
{ {
GString *string; GString *string;
gtk_internal_return_val_if_fail (value != NULL, NULL); gtk_internal_return_val_if_fail (value != NULL, NULL);
string = g_string_new (NULL); string = g_string_new (NULL);
gtk_css_value_print (value, string); _gtk_css_value_print (value, string);
return g_string_free (string, FALSE); return g_string_free (string, FALSE);
} }
/** /**
* gtk_css_value_print: * _gtk_css_value_print:
* @value: the value to print * @value: the value to print
* @string: the string to print to * @string: the string to print to
* *
@@ -304,8 +306,8 @@ gtk_css_value_to_string (const GtkCssValue *value)
* via _gtk_style_property_assign(). * via _gtk_style_property_assign().
**/ **/
void void
gtk_css_value_print (const GtkCssValue *value, _gtk_css_value_print (const GtkCssValue *value,
GString *string) GString *string)
{ {
gtk_internal_return_if_fail (value != NULL); gtk_internal_return_if_fail (value != NULL);
gtk_internal_return_if_fail (string != NULL); gtk_internal_return_if_fail (string != NULL);
@@ -361,3 +363,15 @@ gtk_css_value_get_dynamic_value (GtkCssValue *value,
return value->class->get_dynamic_value (value, monotonic_time); return value->class->get_dynamic_value (value, monotonic_time);
} }
gboolean
gtk_css_value_is_computed (const GtkCssValue *value)
{
return value->is_computed;
}
gboolean
gtk_css_value_contains_variables (const GtkCssValue *value)
{
return value->contains_variables;
}
+26 -69
View File
@@ -27,7 +27,7 @@
G_BEGIN_DECLS G_BEGIN_DECLS
#define GTK_TYPE_CSS_VALUE (gtk_css_value_get_type ()) #define GTK_TYPE_CSS_VALUE (_gtk_css_value_get_type ())
/* A GtkCssValue is a refcounted immutable value type */ /* A GtkCssValue is a refcounted immutable value type */
@@ -41,21 +41,16 @@ typedef struct _GtkCssValueClass GtkCssValueClass;
guint is_computed: 1; \ guint is_computed: 1; \
guint contains_variables: 1; guint contains_variables: 1;
typedef struct {
GtkStyleProvider *provider;
GtkCssStyle *style;
GtkCssStyle *parent_style;
GtkCssVariableSet *variables;
GtkCssValue **shorthands;
} GtkCssComputeContext;
struct _GtkCssValueClass { struct _GtkCssValueClass {
const char *type_name; const char *type_name;
void (* free) (GtkCssValue *value); void (* free) (GtkCssValue *value);
GtkCssValue * (* compute) (GtkCssValue *value, GtkCssValue * (* compute) (GtkCssValue *value,
guint property_id, guint property_id,
GtkCssComputeContext *context); GtkStyleProvider *provider,
GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssVariableSet *variables);
gboolean (* equal) (const GtkCssValue *value1, gboolean (* equal) (const GtkCssValue *value1,
const GtkCssValue *value2); const GtkCssValue *value2);
GtkCssValue * (* transition) (GtkCssValue *start, GtkCssValue * (* transition) (GtkCssValue *start,
@@ -69,78 +64,40 @@ struct _GtkCssValueClass {
GString *string); GString *string);
}; };
GType gtk_css_value_get_type (void) G_GNUC_CONST; GType _gtk_css_value_get_type (void) G_GNUC_CONST;
GtkCssValue * gtk_css_value_alloc (const GtkCssValueClass *klass, GtkCssValue *_gtk_css_value_alloc (const GtkCssValueClass *klass,
gsize size); gsize size);
#define gtk_css_value_new(name, klass) ((name *) gtk_css_value_alloc ((klass), sizeof (name))) #define _gtk_css_value_new(_name, _klass) ((_name *) _gtk_css_value_alloc ((_klass), sizeof (_name)))
GtkCssValue * (gtk_css_value_ref) (GtkCssValue *value); #define _gtk_css_value_ref gtk_css_value_ref
void (gtk_css_value_unref) (GtkCssValue *value); GtkCssValue * gtk_css_value_ref (GtkCssValue *value);
#define _gtk_css_value_unref gtk_css_value_unref
void gtk_css_value_unref (GtkCssValue *value);
GtkCssValue * gtk_css_value_compute (GtkCssValue *value, GtkCssValue *_gtk_css_value_compute (GtkCssValue *value,
guint property_id, guint property_id,
GtkCssComputeContext *context) G_GNUC_PURE; GtkStyleProvider *provider,
gboolean gtk_css_value_equal (const GtkCssValue *value1, GtkCssStyle *style,
GtkCssStyle *parent_style,
GtkCssVariableSet *variables) G_GNUC_PURE;
gboolean _gtk_css_value_equal (const GtkCssValue *value1,
const GtkCssValue *value2) G_GNUC_PURE; const GtkCssValue *value2) G_GNUC_PURE;
gboolean gtk_css_value_equal0 (const GtkCssValue *value1, gboolean _gtk_css_value_equal0 (const GtkCssValue *value1,
const GtkCssValue *value2) G_GNUC_PURE; const GtkCssValue *value2) G_GNUC_PURE;
GtkCssValue * gtk_css_value_transition (GtkCssValue *start, GtkCssValue *_gtk_css_value_transition (GtkCssValue *start,
GtkCssValue *end, GtkCssValue *end,
guint property_id, guint property_id,
double progress); double progress);
gboolean gtk_css_value_is_dynamic (const GtkCssValue *value) G_GNUC_PURE; gboolean gtk_css_value_is_dynamic (const GtkCssValue *value) G_GNUC_PURE;
GtkCssValue * gtk_css_value_get_dynamic_value (GtkCssValue *value, GtkCssValue * gtk_css_value_get_dynamic_value (GtkCssValue *value,
gint64 monotonic_time); gint64 monotonic_time);
char * gtk_css_value_to_string (const GtkCssValue *value); char * _gtk_css_value_to_string (const GtkCssValue *value);
void gtk_css_value_print (const GtkCssValue *value, void _gtk_css_value_print (const GtkCssValue *value,
GString *string); GString *string);
gboolean gtk_css_value_is_computed (const GtkCssValue *value) G_GNUC_PURE;
typedef struct { GTK_CSS_VALUE_BASE } GtkCssValueBase; gboolean gtk_css_value_contains_variables (const GtkCssValue *value) G_GNUC_PURE;
static inline GtkCssValue *
gtk_css_value_ref_inline (GtkCssValue *value)
{
GtkCssValueBase *value_base = (GtkCssValueBase *) value;
value_base->ref_count += 1;
return value;
}
static inline void
gtk_css_value_unref_inline (GtkCssValue *value)
{
GtkCssValueBase *value_base = (GtkCssValueBase *) value;
if (value_base && value_base->ref_count > 1)
{
value_base->ref_count -= 1;
return;
}
(gtk_css_value_unref) (value);
}
#define gtk_css_value_ref(value) gtk_css_value_ref_inline (value)
#define gtk_css_value_unref(value) gtk_css_value_unref_inline (value)
static inline gboolean
gtk_css_value_is_computed (const GtkCssValue *value)
{
GtkCssValueBase *value_base = (GtkCssValueBase *) value;
return value_base->is_computed;
}
static inline gboolean
gtk_css_value_contains_variables (const GtkCssValue *value)
{
GtkCssValueBase *value_base = (GtkCssValueBase *) value;
return value_base->contains_variables;
}
G_END_DECLS G_END_DECLS
-1
View File
@@ -96,7 +96,6 @@ typedef enum {
GTK_DEBUG_A11Y = 1 << 17, GTK_DEBUG_A11Y = 1 << 17,
GTK_DEBUG_ICONFALLBACK = 1 << 18, GTK_DEBUG_ICONFALLBACK = 1 << 18,
GTK_DEBUG_INVERT_TEXT_DIR = 1 << 19, GTK_DEBUG_INVERT_TEXT_DIR = 1 << 19,
GTK_DEBUG_CSS = 1 << 20,
} GtkDebugFlags; } GtkDebugFlags;
#define GTK_DEBUG_CHECK(type) G_UNLIKELY (gtk_get_debug_flags () & GTK_DEBUG_##type) #define GTK_DEBUG_CHECK(type) G_UNLIKELY (gtk_get_debug_flags () & GTK_DEBUG_##type)
-21
View File
@@ -1033,8 +1033,6 @@ selection_check (GtkFileChooserWidget *impl,
g_clear_object (&info); g_clear_object (&info);
} }
g_clear_pointer (&bitset, gtk_bitset_unref);
g_assert (n_selected == 0 || !(all_files && all_folders)); g_assert (n_selected == 0 || !(all_files && all_folders));
if (out_num_selected) if (out_num_selected)
@@ -1139,8 +1137,6 @@ add_to_shortcuts_cb (GSimpleAction *action,
g_clear_object (&info); g_clear_object (&info);
} }
g_clear_pointer (&bitset, gtk_bitset_unref);
} }
typedef struct { typedef struct {
@@ -1221,8 +1217,6 @@ delete_file_cb (GSimpleAction *action,
g_clear_object (&info); g_clear_object (&info);
} }
g_clear_pointer (&bitset, gtk_bitset_unref);
} }
static void static void
@@ -1253,8 +1247,6 @@ trash_file_cb (GSimpleAction *action,
g_clear_object (&info); g_clear_object (&info);
} }
g_clear_pointer (&bitset, gtk_bitset_unref);
} }
static void static void
@@ -2597,8 +2589,6 @@ location_bar_update (GtkFileChooserWidget *impl)
if (gtk_bitset_iter_init_first (&iter, bitset, &position)) if (gtk_bitset_iter_init_first (&iter, bitset, &position))
put_recent_folder_in_pathbar (impl, position); put_recent_folder_in_pathbar (impl, position);
g_clear_pointer (&bitset, gtk_bitset_unref);
} }
visible = FALSE; visible = FALSE;
break; break;
@@ -3993,8 +3983,6 @@ update_chooser_entry (GtkFileChooserWidget *impl)
n_selected++; n_selected++;
} }
g_clear_pointer (&bitset, gtk_bitset_unref);
if (n_selected == 0) if (n_selected == 0)
{ {
if (impl->operation_mode == OPERATION_MODE_RECENT) if (impl->operation_mode == OPERATION_MODE_RECENT)
@@ -4481,8 +4469,6 @@ gtk_file_chooser_widget_unselect_file (GtkFileChooser *chooser,
if (gtk_bitset_iter_is_valid (&iter)) if (gtk_bitset_iter_is_valid (&iter))
gtk_selection_model_unselect_item (impl->selection_model, i); gtk_selection_model_unselect_item (impl->selection_model, i);
g_clear_pointer (&bitset, gtk_bitset_unref);
} }
static void static void
@@ -4699,8 +4685,6 @@ gtk_file_chooser_widget_get_files (GtkFileChooser *chooser)
g_list_store_append (result, file); g_list_store_append (result, file);
} }
g_clear_pointer (&bitset, gtk_bitset_unref);
/* If there is no selection in the file list, we probably have this situation: /* If there is no selection in the file list, we probably have this situation:
* *
* 1. The user typed a filename in the SAVE filename entry ("foo.txt"). * 1. The user typed a filename in the SAVE filename entry ("foo.txt").
@@ -4911,15 +4895,12 @@ switch_to_selected_folder (GtkFileChooserWidget *impl)
file = _gtk_file_info_get_file (info); file = _gtk_file_info_get_file (info);
change_folder_and_display_error (impl, file, FALSE); change_folder_and_display_error (impl, file, FALSE);
g_clear_pointer (&bitset, gtk_bitset_unref);
g_object_unref (info); g_object_unref (info);
return; return;
} }
g_clear_object (&info); g_clear_object (&info);
} }
g_clear_pointer (&bitset, gtk_bitset_unref);
} }
/* Gets the display name of the selected file in the file list; assumes single /* Gets the display name of the selected file in the file list; assumes single
@@ -5649,8 +5630,6 @@ gtk_file_chooser_widget_get_selected_files (GtkFileChooserWidget *impl)
g_clear_object (&info); g_clear_object (&info);
} }
g_clear_pointer (&bitset, gtk_bitset_unref);
return result; return result;
} }
+15 -2
View File
@@ -37,7 +37,10 @@
* should be modal. * should be modal.
* *
* The dialog is shown with [method@Gtk.FileDialog.open], * The dialog is shown with [method@Gtk.FileDialog.open],
* [method@Gtk.FileDialog.save], etc. * [method@Gtk.FileDialog.save], etc. These APIs follow the
* GIO async pattern, and the result can be obtained by calling
* the corresponding finish function, for example
* [method@Gtk.FileDialog.open_finish].
* *
* Since: 4.10 * Since: 4.10
*/ */
@@ -690,7 +693,7 @@ gtk_file_dialog_set_initial_file (GtkFileDialog *self,
{ {
GFile *folder; GFile *folder;
GFileInfo *info; GFileInfo *info;
if (self->initial_file && g_file_equal (self->initial_file, file)) if (self->initial_file && g_file_equal (self->initial_file, file))
return; return;
@@ -924,6 +927,8 @@ finish_multiple_files_op (GtkFileDialog *self,
* presenting a file chooser dialog to the user. * presenting a file chooser dialog to the user.
* *
* The @callback will be called when the dialog is dismissed. * The @callback will be called when the dialog is dismissed.
* It should call [method@Gtk.FileDialog.open_finish]
* to obtain the result.
* *
* Since: 4.10 * Since: 4.10
*/ */
@@ -996,6 +1001,8 @@ gtk_file_dialog_open_finish (GtkFileDialog *self,
* will be in the directory [property@Gtk.FileDialog:initial-folder]. * will be in the directory [property@Gtk.FileDialog:initial-folder].
* *
* The @callback will be called when the dialog is dismissed. * The @callback will be called when the dialog is dismissed.
* It should call [method@Gtk.FileDialog.select_folder_finish]
* to obtain the result.
* *
* Since: 4.10 * Since: 4.10
*/ */
@@ -1064,6 +1071,8 @@ gtk_file_dialog_select_folder_finish (GtkFileDialog *self,
* presenting a file chooser dialog to the user. * presenting a file chooser dialog to the user.
* *
* The @callback will be called when the dialog is dismissed. * The @callback will be called when the dialog is dismissed.
* It should call [method@Gtk.FileDialog.save_finish]
* to obtain the result.
* *
* Since: 4.10 * Since: 4.10
*/ */
@@ -1135,6 +1144,8 @@ gtk_file_dialog_save_finish (GtkFileDialog *self,
* [property@Gtk.FileDialog:initial-folder]. * [property@Gtk.FileDialog:initial-folder].
* *
* The @callback will be called when the dialog is dismissed. * The @callback will be called when the dialog is dismissed.
* It should call [method@Gtk.FileDialog.open_multiple_finish]
* to obtain the result.
* *
* Since: 4.10 * Since: 4.10
*/ */
@@ -1207,6 +1218,8 @@ gtk_file_dialog_open_multiple_finish (GtkFileDialog *self,
* [property@Gtk.FileDialog:initial-folder]. * [property@Gtk.FileDialog:initial-folder].
* *
* The @callback will be called when the dialog is dismissed. * The @callback will be called when the dialog is dismissed.
* It should call [method@Gtk.FileDialog.select_multiple_folders_finish]
* to obtain the result.
* *
* Since: 4.10 * Since: 4.10
*/ */
+10
View File
@@ -37,6 +37,8 @@
* right away. * right away.
* *
* The operation is started with the [method@Gtk.FileLauncher.launch] function. * The operation is started with the [method@Gtk.FileLauncher.launch] function.
* This API follows the GIO async pattern, and the result can be obtained by
* calling [method@Gtk.FileLauncher.launch_finish].
* *
* To launch uris that don't represent files, use [class@Gtk.UriLauncher]. * To launch uris that don't represent files, use [class@Gtk.UriLauncher].
* *
@@ -462,6 +464,10 @@ G_GNUC_END_IGNORE_DEPRECATIONS
* *
* This may present an app chooser dialog to the user. * This may present an app chooser dialog to the user.
* *
* The @callback will be called when the operation is completed.
* It should call [method@Gtk.FileLauncher.launch_finish] to obtain
* the result.
*
* Since: 4.10 * Since: 4.10
*/ */
void void
@@ -552,6 +558,10 @@ gtk_file_launcher_launch_finish (GtkFileLauncher *self,
* This is only supported native files. It will fail if @file * This is only supported native files. It will fail if @file
* is e.g. a http:// uri. * is e.g. a http:// uri.
* *
* The @callback will be called when the operation is completed.
* It should call [method@Gtk.FileLauncher.open_containing_folder_finish]
* to obtain the result.
*
* Since: 4.10 * Since: 4.10
*/ */
void void
+1 -1
View File
@@ -2610,7 +2610,7 @@ G_GNUC_END_IGNORE_DEPRECATIONS
cairo_path_destroy (path); cairo_path_destroy (path);
border_color = gtk_css_color_value_get_rgba (style->border->border_top_color ? style->border->border_top_color : style->core->color); border_color = gtk_css_color_value_get_rgba (style->border->border_top_color ? style->border->border_top_color : style->core->color);
border_width = round (gtk_css_number_value_get (style->border->border_left_width, 100)); border_width = round (_gtk_css_number_value_get (style->border->border_left_width, 100));
cairo_set_line_width (cr, border_width); cairo_set_line_width (cr, border_width);
gdk_cairo_set_source_rgba (cr, border_color); gdk_cairo_set_source_rgba (cr, border_color);

Some files were not shown because too many files have changed in this diff Show More