From b33c3086a9f5a7548d1ebae4c74416da2801bb5e Mon Sep 17 00:00:00 2001 From: Michael Natterer Date: Mon, 12 Aug 2019 19:06:13 +0200 Subject: [PATCH] libgimp: allow to call gimp_procedure_add_menu_path() on installed procs Adding menu paths must be possible even after the procedure has been installed, script-fu registers all menu paths afer installing its procedures so they are properly sorted. --- libgimp/gimpprocedure.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/libgimp/gimpprocedure.c b/libgimp/gimpprocedure.c index 1f0aec9c1e..01736ed642 100644 --- a/libgimp/gimpprocedure.c +++ b/libgimp/gimpprocedure.c @@ -80,6 +80,8 @@ struct _GimpProcedurePrivate GimpRunFunc run_func; gpointer run_data; GDestroyNotify run_data_destroy; + + gboolean installed; }; @@ -295,6 +297,8 @@ gimp_procedure_real_install (GimpProcedure *procedure) gsize icon_data_length = 0; gint i; + g_return_if_fail (procedure->priv->installed == FALSE); + args = gimp_procedure_get_arguments (procedure, &n_args); return_vals = gimp_procedure_get_return_values (procedure, &n_return_vals); @@ -392,6 +396,8 @@ gimp_procedure_real_install (GimpProcedure *procedure) _gimp_plugin_menu_register (gimp_procedure_get_name (procedure), list->data); } + + procedure->priv->installed = TRUE; } static void @@ -400,6 +406,8 @@ gimp_procedure_real_uninstall (GimpProcedure *procedure) GimpPlugIn *plug_in; GPProcUninstall proc_uninstall; + g_return_if_fail (procedure->priv->installed == TRUE); + proc_uninstall.name = (gchar *) gimp_procedure_get_name (procedure); plug_in = gimp_procedure_get_plug_in (procedure); @@ -407,6 +415,8 @@ gimp_procedure_real_uninstall (GimpProcedure *procedure) if (! gp_proc_uninstall_write (_gimp_plug_in_get_write_channel (plug_in), &proc_uninstall, plug_in)) gimp_quit (); + + procedure->priv->installed = FALSE; } static GimpValueArray * @@ -660,6 +670,10 @@ gimp_procedure_add_menu_path (GimpProcedure *procedure, procedure->priv->menu_paths = g_list_append (procedure->priv->menu_paths, g_strdup (menu_path)); + + if (procedure->priv->installed) + _gimp_plugin_menu_register (gimp_procedure_get_name (procedure), + menu_path); } /**