mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-02-04 02:06:18 +01:00
Merge branch 'param-value-default' into 'master'
Allow using an empty GValue with g_param_value_set_default() See merge request GNOME/glib!1186
This commit is contained in:
commit
1503547766
@ -29,7 +29,6 @@ check_property (const char *output,
|
||||
if (g_param_value_defaults (pspec, value))
|
||||
return;
|
||||
|
||||
g_value_init (&default_value, G_PARAM_SPEC_VALUE_TYPE (pspec));
|
||||
g_param_value_set_default (pspec, &default_value);
|
||||
|
||||
v = g_strdup_value_contents (value);
|
||||
|
@ -595,7 +595,8 @@ g_param_spec_get_redirect_target (GParamSpec *pspec)
|
||||
/**
|
||||
* g_param_value_set_default:
|
||||
* @pspec: a valid #GParamSpec
|
||||
* @value: a #GValue of correct type for @pspec
|
||||
* @value: a #GValue of correct type for @pspec; since 2.64, you
|
||||
* can also pass an empty #GValue, initialized with %G_VALUE_INIT
|
||||
*
|
||||
* Sets @value to its default value as specified in @pspec.
|
||||
*/
|
||||
@ -604,10 +605,18 @@ g_param_value_set_default (GParamSpec *pspec,
|
||||
GValue *value)
|
||||
{
|
||||
g_return_if_fail (G_IS_PARAM_SPEC (pspec));
|
||||
g_return_if_fail (G_IS_VALUE (value));
|
||||
g_return_if_fail (PSPEC_APPLIES_TO_VALUE (pspec, value));
|
||||
|
||||
g_value_reset (value);
|
||||
if (G_VALUE_TYPE (value) == G_TYPE_INVALID)
|
||||
{
|
||||
g_value_init (value, G_PARAM_SPEC_VALUE_TYPE (pspec));
|
||||
}
|
||||
else
|
||||
{
|
||||
g_return_if_fail (G_IS_VALUE (value));
|
||||
g_return_if_fail (PSPEC_APPLIES_TO_VALUE (pspec, value));
|
||||
g_value_reset (value);
|
||||
}
|
||||
|
||||
G_PARAM_SPEC_GET_CLASS (pspec)->value_set_default (pspec, value);
|
||||
}
|
||||
|
||||
@ -621,8 +630,8 @@ g_param_value_set_default (GParamSpec *pspec,
|
||||
* Returns: whether @value contains the canonical default for this @pspec
|
||||
*/
|
||||
gboolean
|
||||
g_param_value_defaults (GParamSpec *pspec,
|
||||
GValue *value)
|
||||
g_param_value_defaults (GParamSpec *pspec,
|
||||
const GValue *value)
|
||||
{
|
||||
GValue dflt_value = G_VALUE_INIT;
|
||||
gboolean defaults;
|
||||
@ -631,7 +640,6 @@ g_param_value_defaults (GParamSpec *pspec,
|
||||
g_return_val_if_fail (G_IS_VALUE (value), FALSE);
|
||||
g_return_val_if_fail (PSPEC_APPLIES_TO_VALUE (pspec, value), FALSE);
|
||||
|
||||
g_value_init (&dflt_value, G_PARAM_SPEC_VALUE_TYPE (pspec));
|
||||
G_PARAM_SPEC_GET_CLASS (pspec)->value_set_default (pspec, &dflt_value);
|
||||
defaults = G_PARAM_SPEC_GET_CLASS (pspec)->values_cmp (pspec, value, &dflt_value) == 0;
|
||||
g_value_unset (&dflt_value);
|
||||
|
@ -307,7 +307,7 @@ void g_param_value_set_default (GParamSpec *pspec,
|
||||
GValue *value);
|
||||
GLIB_AVAILABLE_IN_ALL
|
||||
gboolean g_param_value_defaults (GParamSpec *pspec,
|
||||
GValue *value);
|
||||
const GValue *value);
|
||||
GLIB_AVAILABLE_IN_ALL
|
||||
gboolean g_param_value_validate (GParamSpec *pspec,
|
||||
GValue *value);
|
||||
|
@ -912,8 +912,11 @@ param_value_array_validate (GParamSpec *pspec,
|
||||
g_param_value_set_default (element_spec, element);
|
||||
changed++;
|
||||
}
|
||||
/* validate array value against element_spec */
|
||||
changed += g_param_value_validate (element_spec, element);
|
||||
else
|
||||
{
|
||||
/* validate array value against element_spec */
|
||||
changed += g_param_value_validate (element_spec, element);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user