libgimp: Create widgets for unsigned integer parameters

gimp_procedure_add_uint_argument () creates an unsigned integer
parameter. It's functionally equivalent for creating dialogue widgets,
but since we only checked for G_TYPE_PARAM_INT, these parameters
did not generate widgets in GimpProcedureDialog.
This patch adds a check for G_TYPE_PARAM_UINT in relevant sections
to resolve the issue.
This commit is contained in:
Alx Sa 2025-05-31 13:14:09 +00:00
parent 03366ae77c
commit 0d08a3c532

View file

@ -638,7 +638,7 @@ gimp_procedure_dialog_set_ok_label (GimpProcedureDialog *dialog,
* - %G_TYPE_PARAM_BOOLEAN:
* * %GTK_TYPE_CHECK_BUTTON (default)
* * %GTK_TYPE_SWITCH
* - %G_TYPE_PARAM_INT or %G_TYPE_PARAM_DOUBLE:
* - %G_TYPE_PARAM_INT, %G_TYPE_PARAM_UINT, or %G_TYPE_PARAM_DOUBLE:
* * %GIMP_TYPE_LABEL_SPIN (default): a spin button with a label.
* * %GIMP_TYPE_SCALE_ENTRY: a scale entry with label.
* * %GIMP_TYPE_SPIN_SCALE: a spin scale with label embedded.
@ -721,6 +721,7 @@ gimp_procedure_dialog_get_widget (GimpProcedureDialog *dialog,
&label, NULL);
}
else if (G_PARAM_SPEC_TYPE (pspec) == G_TYPE_PARAM_INT ||
G_PARAM_SPEC_TYPE (pspec) == G_TYPE_PARAM_UINT ||
G_PARAM_SPEC_TYPE (pspec) == G_TYPE_PARAM_DOUBLE)
{
gdouble minimum;
@ -736,6 +737,13 @@ gimp_procedure_dialog_get_widget (GimpProcedureDialog *dialog,
minimum = (gdouble) pspecint->minimum;
maximum = (gdouble) pspecint->maximum;
}
else if (G_PARAM_SPEC_TYPE (pspec) == G_TYPE_PARAM_UINT)
{
GParamSpecUInt *pspecuint = (GParamSpecUInt *) pspec;
minimum = (gdouble) pspecuint->minimum;
maximum = (gdouble) pspecuint->maximum;
}
else /* G_TYPE_PARAM_DOUBLE */
{
GParamSpecDouble *pspecdouble = (GParamSpecDouble *) pspec;
@ -1303,7 +1311,8 @@ gimp_procedure_dialog_get_spin_scale (GimpProcedureDialog *dialog,
}
g_return_val_if_fail (G_PARAM_SPEC_TYPE (pspec) == G_TYPE_PARAM_DOUBLE ||
(G_PARAM_SPEC_TYPE (pspec) == G_TYPE_PARAM_INT &&
((G_PARAM_SPEC_TYPE (pspec) == G_TYPE_PARAM_UINT ||
G_PARAM_SPEC_TYPE (pspec) == G_TYPE_PARAM_INT) &&
factor == 1.0), NULL);
/* First check if it already exists. */
@ -1319,6 +1328,13 @@ gimp_procedure_dialog_get_spin_scale (GimpProcedureDialog *dialog,
minimum = (gdouble) pspecint->minimum;
maximum = (gdouble) pspecint->maximum;
}
if (G_PARAM_SPEC_TYPE (pspec) == G_TYPE_PARAM_UINT)
{
GParamSpecUInt *pspecuint = (GParamSpecUInt *) pspec;
minimum = (gdouble) pspecuint->minimum;
maximum = (gdouble) pspecuint->maximum;
}
else /* G_TYPE_PARAM_DOUBLE */
{
GParamSpecDouble *pspecdouble = (GParamSpecDouble *) pspec;
@ -1386,6 +1402,7 @@ gimp_procedure_dialog_get_scale_entry (GimpProcedureDialog *dialog,
}
g_return_val_if_fail (G_PARAM_SPEC_TYPE (pspec) == G_TYPE_PARAM_INT ||
G_PARAM_SPEC_TYPE (pspec) == G_TYPE_PARAM_UINT ||
G_PARAM_SPEC_TYPE (pspec) == G_TYPE_PARAM_DOUBLE, NULL);
/* First check if it already exists. */
@ -1476,6 +1493,7 @@ gimp_procedure_dialog_get_size_entry (GimpProcedureDialog *dialog,
}
g_return_val_if_fail (G_PARAM_SPEC_TYPE (pspec) == G_TYPE_PARAM_INT ||
G_PARAM_SPEC_TYPE (pspec) == G_TYPE_PARAM_UINT ||
G_PARAM_SPEC_TYPE (pspec) == G_TYPE_PARAM_DOUBLE, NULL);
g_return_val_if_fail (G_PARAM_SPEC_TYPE (pspec_unit) == GIMP_TYPE_PARAM_UNIT, NULL);