forked from AuroraMiddleware/gtk
Allow installing bindings bound to actions
This is just convenience code around GtkShortcut, just like bindings for signal emission and callback invocation.
This commit is contained in:
parent
84a52e3bbd
commit
d75fd59ddf
@ -4418,6 +4418,55 @@ gtk_widget_class_add_binding_signal (GtkWidgetClass *widget_class,
|
||||
g_object_unref (shortcut);
|
||||
}
|
||||
|
||||
/**
|
||||
* gtk_widget_class_add_binding_action: (skip)
|
||||
* @widget_class: the class to add the binding to
|
||||
* @keyval: key value of binding to install
|
||||
* @mods: key modifier of binding to install
|
||||
* @action_name: the action to activate
|
||||
* @format_string: GVariant format string for arguments or %NULL for
|
||||
* no arguments
|
||||
* @...: arguments, as given by format string.
|
||||
*
|
||||
* Creates a new shortcut for @widget_class that activates the given
|
||||
* @action_name with arguments read according to @format_string.
|
||||
* The arguments and format string must be provided in the same way as
|
||||
* with g_variant_new().
|
||||
*
|
||||
* This function is a convenience wrapper around
|
||||
* gtk_widget_class_add_shortcut() and must be called during class
|
||||
* initialization.
|
||||
*/
|
||||
void
|
||||
gtk_widget_class_add_binding_action (GtkWidgetClass *widget_class,
|
||||
guint keyval,
|
||||
GdkModifierType mods,
|
||||
const gchar *action_name,
|
||||
const gchar *format_string,
|
||||
...)
|
||||
{
|
||||
GtkShortcut *shortcut;
|
||||
|
||||
g_return_if_fail (GTK_IS_WIDGET_CLASS (widget_class));
|
||||
/* XXX: validate variant format for action */
|
||||
|
||||
shortcut = gtk_shortcut_new ();
|
||||
gtk_shortcut_set_trigger (shortcut, gtk_keyval_trigger_new (keyval, mods));
|
||||
gtk_shortcut_set_action (shortcut, action_name);
|
||||
if (format_string)
|
||||
{
|
||||
va_list args;
|
||||
va_start (args, format_string);
|
||||
gtk_shortcut_set_arguments (shortcut,
|
||||
g_variant_new_va (format_string, NULL, &args));
|
||||
va_end (args);
|
||||
}
|
||||
|
||||
gtk_widget_class_add_shortcut (widget_class, shortcut);
|
||||
|
||||
g_object_unref (shortcut);
|
||||
}
|
||||
|
||||
/**
|
||||
* gtk_widget_class_add_shortcut:
|
||||
* @widget_class: the class to add the shortcut to
|
||||
|
@ -390,6 +390,14 @@ void gtk_widget_class_add_binding_signal
|
||||
const gchar *format_string,
|
||||
...);
|
||||
GDK_AVAILABLE_IN_ALL
|
||||
void gtk_widget_class_add_binding_action
|
||||
(GtkWidgetClass *widget_class,
|
||||
GdkModifierType mods,
|
||||
guint keyval,
|
||||
const gchar *action_name,
|
||||
const gchar *format_string,
|
||||
...);
|
||||
GDK_AVAILABLE_IN_ALL
|
||||
void gtk_widget_class_add_shortcut (GtkWidgetClass *widget_class,
|
||||
GtkShortcut *shortcut);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user