diff options
author | Matthias Clasen <mclasen@redhat.com> | 2019-06-24 16:10:03 +0000 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2019-06-24 16:10:03 +0000 |
commit | 31d79b07b7be622730eb8f3c0e9df86ae0b6bf2a (patch) | |
tree | ad5f10dcc76180c0118b288d4605a141307703f9 | |
parent | 1527407c3d2f5543fb8cbcffd900788ccc26fe2b (diff) | |
parent | 2405e2711e047b477293bf4a0cba78d5c4785cf1 (diff) | |
download | gtk+-31d79b07b7be622730eb8f3c0e9df86ae0b6bf2a.tar.gz |
Merge branch 'no-varargs-activate' into 'master'
Add a non-varargs variant of activate_action
See merge request GNOME/gtk!959
-rw-r--r-- | docs/reference/gtk/gtk4-sections.txt | 1 | ||||
-rw-r--r-- | gtk/gtkwidget.c | 67 | ||||
-rw-r--r-- | gtk/gtkwidget.h | 4 |
3 files changed, 47 insertions, 25 deletions
diff --git a/docs/reference/gtk/gtk4-sections.txt b/docs/reference/gtk/gtk4-sections.txt index 6d93fc0ebf..a9076529c2 100644 --- a/docs/reference/gtk/gtk4-sections.txt +++ b/docs/reference/gtk/gtk4-sections.txt @@ -4628,6 +4628,7 @@ gtk_widget_observe_controllers <SUBSECTION Actions> gtk_widget_insert_action_group gtk_widget_activate_action +gtk_widget_activate_action_variant gtk_widget_activate_default GtkWidgetActionActivateFunc gtk_widget_class_install_action diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index 1768e3cd99..0c653a90f8 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -12425,9 +12425,38 @@ gtk_widget_get_template_child (GtkWidget *widget, } /** + * gtk_widget_activate_action_variant: (rename-to gtk_widget_activate_action) + * @widget: a #GtkWidget + * @name: the name of the action to activate + * @args: (allow-none): parameters to use, or %NULL + * + * Looks up the action in the action groups associated + * with @widget and its ancestors, and activates it. + * + * If the action is in an action group added with + * gtk_widget_insert_action_group(), the @name is + * expected to be prefixed with the prefix that was + * used when the group was inserted. + * + * The arguments must match the actions expected parameter + * type, as returned by g_action_get_parameter_type(). + */ +void +gtk_widget_activate_action_variant (GtkWidget *widget, + const char *name, + GVariant *args) +{ + GtkActionMuxer *muxer; + + muxer = _gtk_widget_get_action_muxer (widget, FALSE); + if (muxer) + g_action_group_activate_action (G_ACTION_GROUP (muxer), name, args); +} + +/** * gtk_widget_activate_action: * @widget: a #GtkWidget - * @name: a prefixed action name + * @name: the name of the action to activate * @format_string: GVariant format string for arguments or %NULL * for no arguments * @...: arguments, as given by format string @@ -12435,12 +12464,8 @@ gtk_widget_get_template_child (GtkWidget *widget, * Looks up the action in the action groups associated * with @widget and its ancestors, and activates it. * - * The action name is expected to be prefixed with the - * prefix that was used when adding the action group - * with gtk_widget_insert_action_group(). - * - * The arguments must match the actions expected parameter - * type, as returned by g_action_get_parameter_type(). + * This is a wrapper around gtk_widget_activate_action_variant() + * that constructs the @args variant according to @format_string. */ void gtk_widget_activate_action (GtkWidget *widget, @@ -12448,30 +12473,22 @@ gtk_widget_activate_action (GtkWidget *widget, const char *format_string, ...) { - GtkActionMuxer *muxer; + GVariant *parameters = NULL; - muxer = _gtk_widget_get_action_muxer (widget, FALSE); - if (muxer) + if (format_string != NULL) { - GVariant *parameters = NULL; - - if (format_string != NULL) - { - va_list args; + va_list args; - va_start (args, format_string); - parameters = g_variant_new_va (format_string, NULL, &args); - va_end (args); + va_start (args, format_string); + parameters = g_variant_new_va (format_string, NULL, &args); + va_end (args); - g_variant_ref_sink (parameters); - } + g_variant_ref_sink (parameters); + } - g_action_group_activate_action (G_ACTION_GROUP (muxer), - name, - parameters); + gtk_widget_activate_action_variant (widget, name, parameters); - g_clear_pointer (¶meters, g_variant_unref); - } + g_clear_pointer (¶meters, g_variant_unref); } /** diff --git a/gtk/gtkwidget.h b/gtk/gtkwidget.h index dd411945a9..a842d89031 100644 --- a/gtk/gtkwidget.h +++ b/gtk/gtkwidget.h @@ -980,6 +980,10 @@ void 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, + const char *name, + GVariant *args); GDK_AVAILABLE_IN_ALL void gtk_widget_activate_default (GtkWidget *widget); |