mirror of
https://gitlab.gnome.org/GNOME/gimp.git
synced 2025-07-03 09:23:24 +00:00
script-fu: Respect no-validate flag in Script-fu
GIMP 3.0 enforces stricter parameter range checks compared to GIMP 2.10. As a result, scripts that are the right datatype but go outside the parameter range will fail. In GimpProcedure, we have checks if a no-validate flag is set to bypass these constraints. This patch adds those checks to Script-fu so it also knows to not check ranges if no-validate is set.
This commit is contained in:
parent
12f643329a
commit
1f1404dc93
1 changed files with 16 additions and 8 deletions
|
@ -765,8 +765,10 @@ script_fu_marshal_arg_to_value (scheme *sc,
|
|||
GParamSpecInt *ispec = G_PARAM_SPEC_INT (arg_spec);
|
||||
gint v = sc->vptr->ivalue (sc->vptr->pair_car (a));
|
||||
|
||||
if (v < ispec->minimum || v > ispec->maximum)
|
||||
return script_int_range_error (sc, arg_index, proc_name, ispec->minimum, ispec->maximum, v);
|
||||
if (! (arg_spec->flags & GIMP_PARAM_NO_VALIDATE) &&
|
||||
(v < ispec->minimum || v > ispec->maximum))
|
||||
return script_int_range_error (sc, arg_index, proc_name,
|
||||
ispec->minimum, ispec->maximum, v);
|
||||
|
||||
g_value_set_int (value, v);
|
||||
if (strvalue)
|
||||
|
@ -784,8 +786,10 @@ script_fu_marshal_arg_to_value (scheme *sc,
|
|||
GParamSpecUInt *ispec = G_PARAM_SPEC_UINT (arg_spec);
|
||||
gint v = sc->vptr->ivalue (arg_val);
|
||||
|
||||
if (v < ispec->minimum || v > ispec->maximum)
|
||||
return script_int_range_error (sc, arg_index, proc_name, ispec->minimum, ispec->maximum, v);
|
||||
if (! (arg_spec->flags & GIMP_PARAM_NO_VALIDATE) &&
|
||||
(v < ispec->minimum || v > ispec->maximum))
|
||||
return script_int_range_error (sc, arg_index, proc_name,
|
||||
ispec->minimum, ispec->maximum, v);
|
||||
|
||||
g_value_set_uint (value, v);
|
||||
if (strvalue)
|
||||
|
@ -803,8 +807,10 @@ script_fu_marshal_arg_to_value (scheme *sc,
|
|||
GParamSpecUChar *cspec = G_PARAM_SPEC_UCHAR (arg_spec);
|
||||
gint c = sc->vptr->ivalue (arg_val);
|
||||
|
||||
if (c < cspec->minimum || c > cspec->maximum)
|
||||
return script_int_range_error (sc, arg_index, proc_name, cspec->minimum, cspec->maximum, c);
|
||||
if (! (arg_spec->flags & GIMP_PARAM_NO_VALIDATE) &&
|
||||
(c < cspec->minimum || c > cspec->maximum))
|
||||
return script_int_range_error (sc, arg_index, proc_name,
|
||||
cspec->minimum, cspec->maximum, c);
|
||||
|
||||
g_value_set_uchar (value, c);
|
||||
if (strvalue)
|
||||
|
@ -822,7 +828,8 @@ script_fu_marshal_arg_to_value (scheme *sc,
|
|||
GParamSpecDouble *dspec = G_PARAM_SPEC_DOUBLE (arg_spec);
|
||||
gdouble d = sc->vptr->rvalue (arg_val);
|
||||
|
||||
if (d < dspec->minimum || d > dspec->maximum)
|
||||
if (! (arg_spec->flags & GIMP_PARAM_NO_VALIDATE) &&
|
||||
(d < dspec->minimum || d > dspec->maximum))
|
||||
return script_float_range_error (sc, arg_index, proc_name, dspec->minimum, dspec->maximum, d);
|
||||
|
||||
g_value_set_double (value, d);
|
||||
|
@ -1716,7 +1723,8 @@ script_fu_marshal_procedure_call (scheme *sc,
|
|||
}
|
||||
|
||||
debug_gvalue (&value);
|
||||
if (g_param_value_validate (arg_spec, &value))
|
||||
if (! (arg_spec->flags & GIMP_PARAM_NO_VALIDATE) &&
|
||||
g_param_value_validate (arg_spec, &value))
|
||||
{
|
||||
gchar error_message[1024];
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue