diff --git a/app/core/gimpparamspecs-desc.c b/app/core/gimpparamspecs-desc.c
index 3f7ef9d8fc..0898d6776e 100644
--- a/app/core/gimpparamspecs-desc.c
+++ b/app/core/gimpparamspecs-desc.c
@@ -49,9 +49,12 @@ static gchar *
gimp_param_spec_unit_desc (GParamSpec *pspec)
{
GimpParamSpecUnit *uspec = GIMP_PARAM_SPEC_UNIT (pspec);
+ GObject *default_value;
+
+ default_value = gimp_param_spec_object_get_default (pspec);
return g_strdup_printf ("(default %s%s%s)",
- gimp_unit_get_abbreviation (uspec->default_value),
+ gimp_unit_get_abbreviation (GIMP_UNIT (default_value)),
uspec->allow_pixel ? ", pixel allowed": "",
uspec->allow_percent ? ", percent allowed": "");
}
diff --git a/libgimp/gimpgpparams-body.c b/libgimp/gimpgpparams-body.c
index aaf07ec02e..185e4f5863 100644
--- a/libgimp/gimpgpparams-body.c
+++ b/libgimp/gimpgpparams-body.c
@@ -430,12 +430,15 @@ _gimp_param_spec_to_gp_param_def (GParamSpec *pspec,
else if (pspec_type == GIMP_TYPE_PARAM_UNIT)
{
GimpParamSpecUnit *uspec = GIMP_PARAM_SPEC_UNIT (pspec);
+ GObject *default_value;
+
+ default_value = gimp_param_spec_object_get_default (pspec);
param_def->param_def_type = GP_PARAM_DEF_TYPE_UNIT;
param_def->meta.m_unit.allow_pixels = uspec->allow_pixel;
param_def->meta.m_unit.allow_percent = uspec->allow_percent;
- param_def->meta.m_unit.default_val = gimp_unit_get_id (uspec->default_value);
+ param_def->meta.m_unit.default_val = gimp_unit_get_id (GIMP_UNIT (default_value));
}
#ifndef LIBGIMP_COMPILATION
/* This trick is only for core side when it needs to send the param
diff --git a/libgimp/gimpparamspecs-desc.c b/libgimp/gimpparamspecs-desc.c
index fd7296a6eb..8e4cdacf42 100644
--- a/libgimp/gimpparamspecs-desc.c
+++ b/libgimp/gimpparamspecs-desc.c
@@ -45,9 +45,12 @@ static gchar *
gimp_param_spec_unit_desc (GParamSpec *pspec)
{
GimpParamSpecUnit *uspec = GIMP_PARAM_SPEC_UNIT (pspec);
+ GObject *default_value;
+
+ default_value = gimp_param_spec_object_get_default (pspec);
return g_strdup_printf ("(default %s%s%s)",
- gimp_unit_get_abbreviation (uspec->default_value),
+ gimp_unit_get_abbreviation (GIMP_UNIT (default_value)),
uspec->allow_pixel ? ", pixel allowed": "",
uspec->allow_percent ? ", percent allowed": "");
}
diff --git a/libgimpbase/gimpunit.c b/libgimpbase/gimpunit.c
index 8691192951..21669e09bf 100644
--- a/libgimpbase/gimpunit.c
+++ b/libgimpbase/gimpunit.c
@@ -933,8 +933,6 @@ gimp_units_to_points (gdouble value,
static void gimp_param_unit_class_init (GimpParamSpecObjectClass *klass);
static void gimp_param_unit_init (GParamSpec *pspec);
static GParamSpec * gimp_param_unit_duplicate (GParamSpec *pspec);
-static void gimp_param_unit_set_default (GParamSpec *pspec,
- GValue *value);
static gboolean gimp_param_unit_validate (GParamSpec *pspec,
GValue *value);
@@ -980,18 +978,19 @@ gimp_param_unit_class_init (GimpParamSpecObjectClass *klass)
klass->duplicate = gimp_param_unit_duplicate;
pclass->value_type = GIMP_TYPE_UNIT;
- pclass->value_set_default = gimp_param_unit_set_default;
pclass->value_validate = gimp_param_unit_validate;
}
static void
gimp_param_unit_init (GParamSpec *pspec)
{
- GimpParamSpecUnit *uspec = GIMP_PARAM_SPEC_UNIT (pspec);
+ GimpParamSpecUnit *uspec = GIMP_PARAM_SPEC_UNIT (pspec);
+ GimpParamSpecObject *ospec = GIMP_PARAM_SPEC_OBJECT (pspec);
- uspec->allow_pixel = TRUE;
- uspec->allow_percent = TRUE;
- uspec->default_value = gimp_unit_inch ();
+ uspec->allow_pixel = TRUE;
+ uspec->allow_percent = TRUE;
+ ospec->_default_value = g_object_ref (G_OBJECT (gimp_unit_inch ()));
+ ospec->_has_default = TRUE;
}
static GParamSpec *
@@ -1008,24 +1007,15 @@ gimp_param_unit_duplicate (GParamSpec *pspec)
g_param_spec_get_blurb (pspec),
uspec->allow_pixel,
uspec->allow_percent,
- uspec->default_value,
+ GIMP_UNIT (gimp_param_spec_object_get_default (pspec)),
pspec->flags);
return duplicate;
}
-static void
-gimp_param_unit_set_default (GParamSpec *pspec,
- GValue *value)
-{
- GimpParamSpecUnit *uspec = GIMP_PARAM_SPEC_UNIT (pspec);
-
- g_value_set_object (value, uspec->default_value);
-}
-
static gboolean
gimp_param_unit_validate (GParamSpec *pspec,
- GValue *value)
+ GValue *value)
{
GimpParamSpecUnit *uspec = GIMP_PARAM_SPEC_UNIT (pspec);
GObject *unit = value->data[0].v_pointer;
@@ -1035,7 +1025,7 @@ gimp_param_unit_validate (GParamSpec *pspec,
(! uspec->allow_pixel && value->data[0].v_pointer == gimp_unit_pixel ()))
{
g_clear_object (&unit);
- value->data[0].v_pointer = g_object_ref (uspec->default_value);
+ value->data[0].v_pointer = g_object_ref (gimp_param_spec_object_get_default (pspec));
return TRUE;
}
@@ -1065,7 +1055,7 @@ gimp_param_spec_unit (const gchar *name,
const gchar *blurb,
gboolean allow_pixel,
gboolean allow_percent,
- GimpUnit *default_value,
+ GimpUnit *default_value,
GParamFlags flags)
{
GimpParamSpecUnit *uspec;
@@ -1079,7 +1069,7 @@ gimp_param_spec_unit (const gchar *name,
uspec->allow_pixel = allow_pixel;
uspec->allow_percent = allow_percent;
- uspec->default_value = default_value;
+ gimp_param_spec_object_set_default (G_PARAM_SPEC (uspec), G_OBJECT (default_value));
return G_PARAM_SPEC (uspec);
}
diff --git a/libgimpbase/gimpunit.h b/libgimpbase/gimpunit.h
index 7afe2a01e9..640f5cf66d 100644
--- a/libgimpbase/gimpunit.h
+++ b/libgimpbase/gimpunit.h
@@ -98,7 +98,6 @@ struct _GimpParamSpecUnit
gboolean allow_pixel;
gboolean allow_percent;
- GimpUnit *default_value;
};
GType gimp_param_unit_get_type (void) G_GNUC_CONST;