summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2019-06-17 12:20:36 +0000
committerMatthias Clasen <mclasen@redhat.com>2019-06-18 15:36:29 +0000
commit07364bc5976e290d9239eb73d206fed1065d2f49 (patch)
tree2b1c37211537d5de901a139a105ba07c58d497fb
parent8634082fe3699f9ec39375df264c7e7134082fa7 (diff)
downloadgtk+-widget-class-actions.tar.gz
window: Add a focus.move actionwidget-class-actions
This is a first step towards redoing bindings with actions.
-rw-r--r--gtk/gtkwindow.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c
index 5a4f8f76f5..955663d2fe 100644
--- a/gtk/gtkwindow.c
+++ b/gtk/gtkwindow.c
@@ -495,6 +495,9 @@ static void gtk_window_set_theme_variant (GtkWindow *window);
static void gtk_window_activate_default_activate (GtkWidget *widget,
const char *action_name,
GVariant *parameter);
+static void gtk_window_activate_focus_move (GtkWidget *widget,
+ const char *action_name,
+ GVariant *parameter);
static void gtk_window_do_popup (GtkWindow *window,
GdkEventButton *event);
@@ -1203,6 +1206,9 @@ gtk_window_class_init (GtkWindowClass *klass)
gtk_widget_class_install_action (widget_class, "default.activate",
gtk_window_activate_default_activate);
+ gtk_widget_class_install_stateful_action (widget_class, "focus.move",
+ gtk_window_activate_focus_move,
+ "i", NULL, NULL);
}
/**
@@ -1781,6 +1787,17 @@ gtk_window_activate_default_activate (GtkWidget *widget,
}
static void
+gtk_window_activate_focus_move (GtkWidget *widget,
+ const char *action_name,
+ GVariant *parameter)
+{
+ gtk_window_move_focus (widget,
+ CLAMP (g_variant_get_int32 (parameter),
+ GTK_DIR_TAB_FORWARD,
+ GTK_DIR_RIGHT));
+}
+
+static void
gtk_window_init (GtkWindow *window)
{
GtkWindowPrivate *priv = gtk_window_get_instance_private (window);