[gnome-builder] libide/gui: handle addins that are action groups



commit 0b7e0df20875a41c4cb5f0a6fd5f46c37a394be5
Author: Christian Hergert <chergert redhat com>
Date:   Fri Jul 29 12:44:00 2022 -0700

    libide/gui: handle addins that are action groups

 src/libide/gui/ide-workbench-addin.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)
---
diff --git a/src/libide/gui/ide-workbench-addin.c b/src/libide/gui/ide-workbench-addin.c
index 59fc5a837..86b305026 100644
--- a/src/libide/gui/ide-workbench-addin.c
+++ b/src/libide/gui/ide-workbench-addin.c
@@ -335,15 +335,24 @@ ide_workbench_addin_project_loaded (IdeWorkbenchAddin *self,
  * "context.workbench.module-name" where "module-name" is replaced with the
  * module-name of the plugin.
  *
+ * If @self is a #GActionGroup and @self did not implement the
+ * `IdeWorkbenchAddinInterface.ref_action_group` vfunc, then @self is
+ * returned with it's reference count incremented.
+ *
  * Returns: (transfer full) (nullable): a #GActionGroup or %NULL
  */
 GActionGroup *
 ide_workbench_addin_ref_action_group (IdeWorkbenchAddin *self)
 {
+  GActionGroup *action_group = NULL;
+
   g_return_val_if_fail (IDE_IS_WORKBENCH_ADDIN (self), NULL);
 
   if (IDE_WORKBENCH_ADDIN_GET_IFACE (self)->ref_action_group)
-    return IDE_WORKBENCH_ADDIN_GET_IFACE (self)->ref_action_group (self);
+    action_group = IDE_WORKBENCH_ADDIN_GET_IFACE (self)->ref_action_group (self);
+
+  if (action_group == NULL && G_IS_ACTION_GROUP (self))
+    action_group = g_object_ref (G_ACTION_GROUP (self));
 
-  return NULL;
+  return action_group;
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]