forked from AuroraMiddleware/gtk
styleproperty: Move default value setting to styleproperty.c
This commit is contained in:
parent
914654901c
commit
66396d2bab
@ -316,6 +316,7 @@ gtk_style_properties_register_property (GtkStylePropertyParser parse_func,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
}
|
||||
|
||||
@ -794,28 +795,6 @@ style_properties_resolve_type (GtkStyleProperties *props,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
lookup_default_value (const GtkStyleProperty *node,
|
||||
GValue *value)
|
||||
{
|
||||
if (node->pspec->value_type == GTK_TYPE_THEMING_ENGINE)
|
||||
g_value_set_object (value, gtk_theming_engine_load (NULL));
|
||||
else if (node->pspec->value_type == PANGO_TYPE_FONT_DESCRIPTION)
|
||||
g_value_take_boxed (value, pango_font_description_from_string ("Sans 10"));
|
||||
else if (node->pspec->value_type == GDK_TYPE_RGBA)
|
||||
{
|
||||
GdkRGBA color;
|
||||
gdk_rgba_parse (&color, "pink");
|
||||
g_value_set_boxed (value, &color);
|
||||
}
|
||||
else if (node->pspec->value_type == GTK_TYPE_BORDER)
|
||||
{
|
||||
g_value_take_boxed (value, gtk_border_new ());
|
||||
}
|
||||
else
|
||||
g_param_value_set_default (node->pspec, value);
|
||||
}
|
||||
|
||||
/* NB: Will return NULL for shorthands */
|
||||
const GValue *
|
||||
_gtk_style_properties_peek_property (GtkStyleProperties *props,
|
||||
@ -895,7 +874,7 @@ gtk_style_properties_get_property (GtkStyleProperties *props,
|
||||
else if (_gtk_style_property_is_shorthand (node))
|
||||
_gtk_style_property_pack (node, props, state, value);
|
||||
else
|
||||
lookup_default_value (node, value);
|
||||
_gtk_style_property_default_value (node, props, value);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
@ -949,7 +928,7 @@ gtk_style_properties_get_valist (GtkStyleProperties *props,
|
||||
GValue default_value = { 0 };
|
||||
|
||||
g_value_init (&default_value, node->pspec->value_type);
|
||||
lookup_default_value (node, &default_value);
|
||||
_gtk_style_property_default_value (node, props, &default_value);
|
||||
G_VALUE_LCOPY (&default_value, args, 0, &error);
|
||||
g_value_unset (&default_value);
|
||||
}
|
||||
|
@ -1729,6 +1729,31 @@ _gtk_style_property_print_value (const GtkStyleProperty *property,
|
||||
func (value, string);
|
||||
}
|
||||
|
||||
void
|
||||
_gtk_style_property_default_value (const GtkStyleProperty *property,
|
||||
GtkStyleProperties *properties,
|
||||
GValue *value)
|
||||
{
|
||||
if (property->default_value_func)
|
||||
property->default_value_func (properties, value);
|
||||
else if (property->pspec->value_type == GTK_TYPE_THEMING_ENGINE)
|
||||
g_value_set_object (value, gtk_theming_engine_load (NULL));
|
||||
else if (property->pspec->value_type == PANGO_TYPE_FONT_DESCRIPTION)
|
||||
g_value_take_boxed (value, pango_font_description_from_string ("Sans 10"));
|
||||
else if (property->pspec->value_type == GDK_TYPE_RGBA)
|
||||
{
|
||||
GdkRGBA color;
|
||||
gdk_rgba_parse (&color, "pink");
|
||||
g_value_set_boxed (value, &color);
|
||||
}
|
||||
else if (property->pspec->value_type == GTK_TYPE_BORDER)
|
||||
{
|
||||
g_value_take_boxed (value, gtk_border_new ());
|
||||
}
|
||||
else
|
||||
g_param_value_set_default (property->pspec, value);
|
||||
}
|
||||
|
||||
gboolean
|
||||
_gtk_style_property_is_shorthand (const GtkStyleProperty *property)
|
||||
{
|
||||
@ -1833,6 +1858,7 @@ gtk_style_property_init (void)
|
||||
unpack_margin,
|
||||
pack_margin,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
gtk_style_properties_register_property (NULL,
|
||||
g_param_spec_int ("padding-top",
|
||||
@ -1862,6 +1888,7 @@ gtk_style_property_init (void)
|
||||
unpack_padding,
|
||||
pack_padding,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
gtk_style_properties_register_property (NULL,
|
||||
g_param_spec_int ("border-top-width",
|
||||
@ -1891,6 +1918,7 @@ gtk_style_property_init (void)
|
||||
unpack_border_width,
|
||||
pack_border_width,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
|
||||
_gtk_style_property_register (g_param_spec_boxed ("border-top-left-radius",
|
||||
@ -1901,7 +1929,8 @@ gtk_style_property_init (void)
|
||||
NULL,
|
||||
NULL,
|
||||
border_corner_radius_value_parse,
|
||||
border_corner_radius_value_print);
|
||||
border_corner_radius_value_print,
|
||||
NULL);
|
||||
_gtk_style_property_register (g_param_spec_boxed ("border-top-right-radius",
|
||||
"Border top right radius",
|
||||
"Border radius of top right corner, in pixels",
|
||||
@ -1910,7 +1939,8 @@ gtk_style_property_init (void)
|
||||
NULL,
|
||||
NULL,
|
||||
border_corner_radius_value_parse,
|
||||
border_corner_radius_value_print);
|
||||
border_corner_radius_value_print,
|
||||
NULL);
|
||||
_gtk_style_property_register (g_param_spec_boxed ("border-bottom-right-radius",
|
||||
"Border bottom right radius",
|
||||
"Border radius of bottom right corner, in pixels",
|
||||
@ -1919,7 +1949,8 @@ gtk_style_property_init (void)
|
||||
NULL,
|
||||
NULL,
|
||||
border_corner_radius_value_parse,
|
||||
border_corner_radius_value_print);
|
||||
border_corner_radius_value_print,
|
||||
NULL);
|
||||
_gtk_style_property_register (g_param_spec_boxed ("border-bottom-left-radius",
|
||||
"Border bottom left radius",
|
||||
"Border radius of bottom left corner, in pixels",
|
||||
@ -1928,7 +1959,8 @@ gtk_style_property_init (void)
|
||||
NULL,
|
||||
NULL,
|
||||
border_corner_radius_value_parse,
|
||||
border_corner_radius_value_print);
|
||||
border_corner_radius_value_print,
|
||||
NULL);
|
||||
_gtk_style_property_register (g_param_spec_int ("border-radius",
|
||||
"Border radius",
|
||||
"Border radius, in pixels",
|
||||
@ -1937,7 +1969,8 @@ gtk_style_property_init (void)
|
||||
unpack_border_radius,
|
||||
pack_border_radius,
|
||||
border_radius_value_parse,
|
||||
border_radius_value_print);
|
||||
border_radius_value_print,
|
||||
NULL);
|
||||
|
||||
gtk_style_properties_register_property (NULL,
|
||||
g_param_spec_enum ("border-style",
|
||||
@ -1980,7 +2013,8 @@ gtk_style_property_init (void)
|
||||
NULL,
|
||||
NULL,
|
||||
bindings_value_parse,
|
||||
bindings_value_print);
|
||||
bindings_value_print,
|
||||
NULL);
|
||||
}
|
||||
|
||||
const GtkStyleProperty *
|
||||
@ -1992,12 +2026,13 @@ _gtk_style_property_lookup (const char *name)
|
||||
}
|
||||
|
||||
void
|
||||
_gtk_style_property_register (GParamSpec *pspec,
|
||||
GtkStylePropertyParser property_parse_func,
|
||||
GtkStyleUnpackFunc unpack_func,
|
||||
GtkStylePackFunc pack_func,
|
||||
GtkStyleParseFunc parse_func,
|
||||
GtkStylePrintFunc print_func)
|
||||
_gtk_style_property_register (GParamSpec *pspec,
|
||||
GtkStylePropertyParser property_parse_func,
|
||||
GtkStyleUnpackFunc unpack_func,
|
||||
GtkStylePackFunc pack_func,
|
||||
GtkStyleParseFunc parse_func,
|
||||
GtkStylePrintFunc print_func,
|
||||
GtkStyleDefaultValueFunc default_value_func)
|
||||
{
|
||||
const GtkStyleProperty *existing;
|
||||
GtkStyleProperty *node;
|
||||
@ -2021,6 +2056,7 @@ _gtk_style_property_register (GParamSpec *pspec,
|
||||
node->unpack_func = unpack_func;
|
||||
node->parse_func = parse_func;
|
||||
node->print_func = print_func;
|
||||
node->default_value_func = default_value_func;
|
||||
|
||||
g_hash_table_insert (properties, pspec->name, node);
|
||||
}
|
||||
|
@ -36,16 +36,19 @@ typedef gboolean (* GtkStyleParseFunc) (GtkCssParser
|
||||
GValue *value);
|
||||
typedef void (* GtkStylePrintFunc) (const GValue *value,
|
||||
GString *string);
|
||||
typedef void (* GtkStyleDefaultValueFunc) (GtkStyleProperties *props,
|
||||
GValue *value);
|
||||
|
||||
|
||||
struct _GtkStyleProperty
|
||||
{
|
||||
GParamSpec *pspec;
|
||||
GtkStylePropertyParser property_parse_func;
|
||||
GtkStyleUnpackFunc unpack_func;
|
||||
GtkStylePackFunc pack_func;
|
||||
GtkStyleParseFunc parse_func;
|
||||
GtkStylePrintFunc print_func;
|
||||
GParamSpec *pspec;
|
||||
GtkStylePropertyParser property_parse_func;
|
||||
GtkStyleUnpackFunc unpack_func;
|
||||
GtkStylePackFunc pack_func;
|
||||
GtkStyleParseFunc parse_func;
|
||||
GtkStylePrintFunc print_func;
|
||||
GtkStyleDefaultValueFunc default_value_func;
|
||||
};
|
||||
|
||||
const GtkStyleProperty * _gtk_style_property_lookup (const char *name);
|
||||
@ -55,7 +58,12 @@ void _gtk_style_property_register (GParamSpec
|
||||
GtkStyleUnpackFunc unpack_func,
|
||||
GtkStylePackFunc pack_func,
|
||||
GtkStyleParseFunc parse_func,
|
||||
GtkStylePrintFunc print_func);
|
||||
GtkStylePrintFunc print_func,
|
||||
GtkStyleDefaultValueFunc default_value_func);
|
||||
|
||||
void _gtk_style_property_default_value (const GtkStyleProperty *property,
|
||||
GtkStyleProperties *properties,
|
||||
GValue *value);
|
||||
|
||||
gboolean _gtk_style_property_is_shorthand (const GtkStyleProperty *property);
|
||||
GParameter * _gtk_style_property_unpack (const GtkStyleProperty *property,
|
||||
|
Loading…
Reference in New Issue
Block a user