libgimp: do not call gimp_procedure_dialog_get_file_chooser() from within…

… gimp_procedure_dialog_get_widget().
This commit is contained in:
Jehan 2025-01-23 23:16:21 +01:00
parent 3115d97248
commit cb9227a6a1

View file

@ -844,8 +844,9 @@ gimp_procedure_dialog_get_widget (GimpProcedureDialog *dialog,
{ {
GimpParamSpecFile *fspec = GIMP_PARAM_SPEC_FILE (pspec); GimpParamSpecFile *fspec = GIMP_PARAM_SPEC_FILE (pspec);
widget = gimp_procedure_dialog_get_file_chooser (dialog, property, widget = gimp_prop_file_chooser_button_new (G_OBJECT (priv->config),
(GtkFileChooserAction) fspec->action); property, NULL,
(GtkFileChooserAction) fspec->action);
} }
else if (G_IS_PARAM_SPEC_OBJECT (pspec) && pspec->value_type == G_TYPE_FILE) else if (G_IS_PARAM_SPEC_OBJECT (pspec) && pspec->value_type == G_TYPE_FILE)
{ {
@ -964,6 +965,8 @@ gimp_procedure_dialog_get_widget (GimpProcedureDialog *dialog,
g_hash_table_remove (priv->sensitive_data, property); g_hash_table_remove (priv->sensitive_data, property);
} }
g_return_val_if_fail (g_hash_table_lookup_extended (priv->widgets, property, NULL, NULL) == FALSE, NULL);
gimp_procedure_dialog_check_mnemonic (dialog, widget, property, NULL); gimp_procedure_dialog_check_mnemonic (dialog, widget, property, NULL);
g_hash_table_insert (priv->widgets, g_strdup (property), widget); g_hash_table_insert (priv->widgets, g_strdup (property), widget);
if (g_object_is_floating (widget)) if (g_object_is_floating (widget))