widget: Make gtk_widget_activate_action() return TRUE/FALSE
authorBenjamin Otte <otte@redhat.com>
Mon, 14 Oct 2019 19:34:00 +0000 (21:34 +0200)
committerBenjamin Otte <otte@redhat.com>
Tue, 15 Oct 2019 05:17:30 +0000 (07:17 +0200)
TRUE if an action was successfully activated, FALSE if it wasn't found.

gtk/gtkwidget.c
gtk/gtkwidget.h

index 4ba950f1e534dca123e98d95d2a347cc04ad04a9..7780f0ded08a49977bd5e5884af6322458d3b2bb 100644 (file)
@@ -12444,8 +12444,11 @@ gtk_widget_get_template_child (GtkWidget   *widget,
  *
  * The arguments must match the actions expected parameter
  * type, as returned by g_action_get_parameter_type().
+ *
+ * Returns: %TRUE if the action was activated, %FALSE if the action does
+ *     not exist.
  */
-void
+gboolean
 gtk_widget_activate_action_variant (GtkWidget  *widget,
                                     const char *name,
                                     GVariant   *args)
@@ -12453,8 +12456,15 @@ gtk_widget_activate_action_variant (GtkWidget  *widget,
   GtkActionMuxer *muxer;
 
   muxer = _gtk_widget_get_action_muxer (widget, FALSE);
-  if (muxer)
-    g_action_group_activate_action (G_ACTION_GROUP (muxer), name, args);
+  if (muxer == NULL)
+    return FALSE;
+
+  if (!g_action_group_has_action (G_ACTION_GROUP (muxer), name))
+    return FALSE;
+
+  g_action_group_activate_action (G_ACTION_GROUP (muxer), name, args);
+
+  return TRUE;
 }
 
 /**
@@ -12470,14 +12480,18 @@ gtk_widget_activate_action_variant (GtkWidget  *widget,
  *
  * This is a wrapper around gtk_widget_activate_action_variant()
  * that constructs the @args variant according to @format_string.
+ *
+ * Returns: %TRUE if the action was activated, %FALSE if the action does
+ *     not exist.
  */
-void
+gboolean
 gtk_widget_activate_action (GtkWidget  *widget,
                             const char *name,
                             const char *format_string,
                             ...)
 {
   GVariant *parameters = NULL;
+  gboolean result;
 
   if (format_string != NULL)
     {
@@ -12490,9 +12504,11 @@ gtk_widget_activate_action (GtkWidget  *widget,
       g_variant_ref_sink (parameters);
     }
 
-  gtk_widget_activate_action_variant (widget, name, parameters);
+  result = gtk_widget_activate_action_variant (widget, name, parameters);
 
   g_clear_pointer (&parameters, g_variant_unref);
+
+  return result;
 }
 
 /**
index cc511f5f26148048ae4ee17c7a09e8d7285447c5..67b752edf04fcf286f4991c9a770e3ca9bc73010 100644 (file)
@@ -972,17 +972,17 @@ void                    gtk_widget_insert_action_group  (GtkWidget    *widget,
                                                          GActionGroup *group);
 
 GDK_AVAILABLE_IN_ALL
-void                    gtk_widget_activate_action      (GtkWidget  *widget,
+gboolean                gtk_widget_activate_action      (GtkWidget  *widget,
                                                          const char *name,
                                                          const char *format_string,
                                                          ...);
 GDK_AVAILABLE_IN_ALL
-void                    gtk_widget_activate_action_variant (GtkWidget  *widget,
+gboolean                gtk_widget_activate_action_variant (GtkWidget  *widget,
                                                             const char *name,
                                                             GVariant   *args);
 
 GDK_AVAILABLE_IN_ALL
-void                   gtk_widget_activate_default      (GtkWidget *widget);
+void                    gtk_widget_activate_default     (GtkWidget *widget);
 
 GDK_AVAILABLE_IN_ALL
 void                    gtk_widget_set_font_map         (GtkWidget             *widget,