summaryrefslogtreecommitdiff
path: root/gtk/gtkwindow.c
diff options
context:
space:
mode:
Diffstat (limited to 'gtk/gtkwindow.c')
-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);