Commit 532a1c6d authored by Matthias Clasen's avatar Matthias Clasen

Replace move-focus signal by focus.move action

parent d1691c5a
......@@ -1632,7 +1632,8 @@ gtk_notebook_move_focus_out (GtkNotebook *notebook,
g_object_ref (notebook);
priv->focus_out = TRUE;
g_signal_emit_by_name (toplevel, "move-focus", direction_type);
gtk_widget_activate_action (GTK_WIDGET (notebook), "focus.move",
"i", direction_type);
priv->focus_out = FALSE;
g_object_unref (notebook);
......
......@@ -609,13 +609,6 @@ gtk_popover_unrealize (GtkWidget *widget)
g_clear_object (&priv->surface);
}
static void
gtk_popover_move_focus (GtkWidget *widget,
GtkDirectionType direction)
{
g_signal_emit_by_name (gtk_widget_get_root (widget), "move-focus", direction);
}
static void
gtk_popover_show (GtkWidget *widget)
{
......@@ -1299,7 +1292,6 @@ gtk_popover_class_init (GtkPopoverClass *klass)
widget_class->measure = gtk_popover_measure;
widget_class->size_allocate = gtk_popover_size_allocate;
widget_class->snapshot = gtk_popover_snapshot;
widget_class->move_focus = gtk_popover_move_focus;
container_class->add = gtk_popover_add;
container_class->remove = gtk_popover_remove;
......
......@@ -379,8 +379,8 @@ add_tab_bindings (GtkWidgetClass *widget_class,
shortcut = gtk_shortcut_new_with_arguments (
gtk_alternative_trigger_new (gtk_keyval_trigger_new (GDK_KEY_Tab, modifiers),
gtk_keyval_trigger_new (GDK_KEY_KP_Tab, modifiers)),
gtk_signal_action_new ("move-focus"),
"(i)", direction);
gtk_action_action_new ("focus.move"),
"i", direction);
g_object_unref (shortcut);
}
......@@ -392,21 +392,17 @@ add_arrow_bindings (GtkWidgetClass *widget_class,
{
guint keypad_keysym = keysym - GDK_KEY_Left + GDK_KEY_KP_Left;
gtk_widget_class_add_binding_signal (widget_class, keysym, 0,
"move-focus",
"(i)",
gtk_widget_class_bind_action (widget_class, keysym, 0,
"focus.move", "i",
direction);
gtk_widget_class_add_binding_signal (widget_class, keysym, GDK_CONTROL_MASK,
"move-focus",
"(i)",
gtk_widget_class_bind_action (widget_class, keysym, GDK_CONTROL_MASK,
"focus.move", "i",
direction);
gtk_widget_class_add_binding_signal (widget_class, keypad_keysym, 0,
"move-focus",
"(i)",
gtk_widget_class_bind_action (widget_class, keypad_keysym, 0,
"focus.move", "i",
direction);
gtk_widget_class_add_binding_signal (widget_class, keypad_keysym, GDK_CONTROL_MASK,
"move-focus",
"(i)",
gtk_widget_class_bind_action (widget_class, keypad_keysym, GDK_CONTROL_MASK,
"focus.move", "i",
direction);
}
......
......@@ -2920,19 +2920,16 @@ gtk_scrolled_window_move_focus_out (GtkScrolledWindow *scrolled_window,
GtkDirectionType direction_type)
{
GtkScrolledWindowPrivate *priv = gtk_scrolled_window_get_instance_private (scrolled_window);
GtkWidget *toplevel;
/* Focus out of the scrolled window entirely. We do this by setting
* a flag, then propagating the focus motion to the notebook.
*/
toplevel = GTK_WIDGET (gtk_widget_get_root (GTK_WIDGET (scrolled_window)));
if (!GTK_IS_ROOT (toplevel))
return;
g_object_ref (scrolled_window);
priv->focus_out = TRUE;
g_signal_emit_by_name (toplevel, "move-focus", direction_type);
gtk_widget_activate_action (GTK_WIDGET (scrolled_window),
"focus.move", "i", direction_type);
priv->focus_out = FALSE;
g_object_unref (scrolled_window);
......
......@@ -1610,23 +1610,23 @@ gtk_text_view_class_init (GtkTextViewClass *klass)
NULL);
/* Control-tab focus motion */
gtk_widget_class_add_binding_signal (widget_class,
GDK_KEY_Tab, GDK_CONTROL_MASK,
"move-focus",
"(i)", GTK_DIR_TAB_FORWARD);
gtk_widget_class_add_binding_signal (widget_class,
GDK_KEY_KP_Tab, GDK_CONTROL_MASK,
"move-focus",
"(i)", GTK_DIR_TAB_FORWARD);
gtk_widget_class_bind_action (widget_class,
GDK_KEY_Tab, GDK_CONTROL_MASK,
"focus.move", "i",
GTK_DIR_TAB_FORWARD);
gtk_widget_class_bind_action (widget_class,
GDK_KEY_KP_Tab, GDK_CONTROL_MASK,
"focus.move", "i",
GTK_DIR_TAB_FORWARD);
gtk_widget_class_add_binding_signal (widget_class,
GDK_KEY_Tab, GDK_SHIFT_MASK | GDK_CONTROL_MASK,
"move-focus",
"(i)", GTK_DIR_TAB_BACKWARD);
gtk_widget_class_add_binding_signal (widget_class,
GDK_KEY_KP_Tab, GDK_SHIFT_MASK | GDK_CONTROL_MASK,
"move-focus",
"(i)", GTK_DIR_TAB_BACKWARD);
gtk_widget_class_bind_action (widget_class,
GDK_KEY_Tab, GDK_SHIFT_MASK | GDK_CONTROL_MASK,
"focus.move", "i",
GTK_DIR_TAB_BACKWARD);
gtk_widget_class_bind_action (widget_class,
GDK_KEY_KP_Tab, GDK_SHIFT_MASK | GDK_CONTROL_MASK,
"focus.move", "i",
GTK_DIR_TAB_BACKWARD);
/* Context menu */
gtk_widget_class_add_binding (widget_class,
......@@ -5052,9 +5052,10 @@ gtk_text_view_key_controller_key_pressed (GtkEventControllerKey *controller,
gtk_text_view_commit_text (text_view, "\t");
}
else
g_signal_emit_by_name (text_view, "move-focus",
(state & GDK_SHIFT_MASK) ?
GTK_DIR_TAB_BACKWARD : GTK_DIR_TAB_FORWARD);
gtk_widget_activate_action (GTK_WIDGET (text_view), "focus.move",
"i", (state & GDK_SHIFT_MASK)
? GTK_DIR_TAB_BACKWARD
: GTK_DIR_TAB_FORWARD);
retval = TRUE;
}
......@@ -5956,7 +5957,8 @@ gtk_text_view_move_cursor (GtkTextView *text_view,
!gtk_widget_keynav_failed (GTK_WIDGET (text_view),
leave_direction))
{
g_signal_emit_by_name (text_view, "move-focus", leave_direction);
gtk_widget_activate_action (GTK_WIDGET (text_view), "focus.move",
"i", leave_direction);
}
return;
......@@ -6141,7 +6143,8 @@ gtk_text_view_move_cursor (GtkTextView *text_view,
if (!gtk_widget_keynav_failed (GTK_WIDGET (text_view),
leave_direction))
{
g_signal_emit_by_name (text_view, "move-focus", leave_direction);
gtk_widget_activate_action (GTK_WIDGET (text_view), "focus.move",
"i", leave_direction);
}
}
else if (! cancel_selection)
......
......@@ -206,8 +206,6 @@ static void gtk_toolbar_size_allocate (GtkWidget *widget,
static void gtk_toolbar_style_updated (GtkWidget *widget);
static gboolean gtk_toolbar_focus (GtkWidget *widget,
GtkDirectionType dir);
static void gtk_toolbar_move_focus (GtkWidget *widget,
GtkDirectionType dir);
static void gtk_toolbar_root (GtkWidget *widget);
static void gtk_toolbar_unroot (GtkWidget *widget);
static void gtk_toolbar_finalize (GObject *object);
......@@ -312,6 +310,9 @@ static void toolbar_tool_shell_iface_init (GtkToolShellIface
static GtkOrientation toolbar_get_orientation (GtkToolShell *shell);
static GtkToolbarStyle toolbar_get_style (GtkToolShell *shell);
static void toolbar_rebuild_menu (GtkToolShell *shell);
static void gtk_toolbar_activate_focus_move (GtkWidget *widget,
const char *action_name,
GVariant *parameter);
G_DEFINE_TYPE_WITH_CODE (GtkToolbar, gtk_toolbar, GTK_TYPE_CONTAINER,
......@@ -327,18 +328,16 @@ static guint toolbar_signals[LAST_SIGNAL] = { 0 };
static void
add_arrow_bindings (GtkWidgetClass *widget_class,
guint keysym,
GtkDirectionType dir)
GtkDirectionType direction)
{
guint keypad_keysym = keysym - GDK_KEY_Left + GDK_KEY_KP_Left;
gtk_widget_class_add_binding_signal (widget_class,
keysym, 0,
"move-focus",
"(i)", dir);
gtk_widget_class_add_binding_signal (widget_class,
keypad_keysym, 0,
"move-focus",
"(i)", dir);
gtk_widget_class_bind_action (widget_class,
keysym, 0,
"focus.move", "i", direction);
gtk_widget_class_bind_action (widget_class,
keypad_keysym, 0,
"focus.move", "i", direction);
}
static void
......@@ -346,14 +345,12 @@ add_ctrl_tab_bindings (GtkWidgetClass *widget_class,
GdkModifierType modifiers,
GtkDirectionType direction)
{
gtk_widget_class_add_binding_signal (widget_class,
GDK_KEY_Tab, GDK_CONTROL_MASK | modifiers,
"move-focus",
"(i)", direction);
gtk_widget_class_add_binding_signal (widget_class,
GDK_KEY_KP_Tab, GDK_CONTROL_MASK | modifiers,
"move-focus",
"(i)", direction);
gtk_widget_class_bind_action (widget_class,
GDK_KEY_Tab, GDK_CONTROL_MASK | modifiers,
"focus.move", "i", direction);
gtk_widget_class_bind_action (widget_class,
GDK_KEY_KP_Tab, GDK_CONTROL_MASK | modifiers,
"focus.move", "i", direction);
}
static void
......@@ -380,12 +377,14 @@ gtk_toolbar_class_init (GtkToolbarClass *klass)
gtk_widget_class_set_accessible_role (widget_class, ATK_ROLE_TOOL_BAR);
/* need to override the base class function via override_class_handler,
* because the signal slot is not available in GtkWidgetClass
/**
* GtkToolbar|focus.move:
* @direction: a #GtkDirectionType indicating the direction to move fous in
*
* The focus.move action moves the focus in the given direction.
*/
g_signal_override_class_handler ("move-focus",
GTK_TYPE_TOOLBAR,
G_CALLBACK (gtk_toolbar_move_focus));
gtk_widget_class_install_action (widget_class, "focus.move", "i",
gtk_toolbar_activate_focus_move);
widget_class->root = gtk_toolbar_root;
widget_class->unroot = gtk_toolbar_unroot;
......@@ -1579,10 +1578,12 @@ gtk_toolbar_focus_home_or_end (GtkToolbar *toolbar,
* Ctrl TAB or an arrow key.
*/
static void
gtk_toolbar_move_focus (GtkWidget *widget,
GtkDirectionType dir)
gtk_toolbar_activate_focus_move (GtkWidget *widget,
const char *action_name,
GVariant *parameter)
{
GtkToolbar *toolbar = GTK_TOOLBAR (widget);
GtkDirectionType dir = g_variant_get_int32 (parameter);
GtkWidget *focus_child;
GList *list;
gboolean try_focus = FALSE;
......
......@@ -507,6 +507,9 @@ static void gtk_window_activate_default_activate (GtkWidget *widget,
static void gtk_window_activate_focus_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);
......@@ -594,8 +597,8 @@ add_tab_bindings (GtkWidgetClass *widget_class,
shortcut = gtk_shortcut_new_with_arguments (
gtk_alternative_trigger_new (gtk_keyval_trigger_new (GDK_KEY_Tab, modifiers),
gtk_keyval_trigger_new (GDK_KEY_KP_Tab, modifiers)),
gtk_signal_action_new ("move-focus"),
"(i)", direction);
gtk_action_action_new ("focus.move"),
"i", direction);
gtk_widget_class_add_shortcut (widget_class, shortcut);
......@@ -609,22 +612,18 @@ add_arrow_bindings (GtkWidgetClass *widget_class,
{
guint keypad_keysym = keysym - GDK_KEY_Left + GDK_KEY_KP_Left;
gtk_widget_class_add_binding_signal (widget_class, keysym, 0,
"move-focus",
"(i)",
direction);
gtk_widget_class_add_binding_signal (widget_class, keysym, GDK_CONTROL_MASK,
"move-focus",
"(i)",
direction);
gtk_widget_class_add_binding_signal (widget_class, keypad_keysym, 0,
"move-focus",
"(i)",
direction);
gtk_widget_class_add_binding_signal (widget_class, keypad_keysym, GDK_CONTROL_MASK,
"move-focus",
"(i)",
direction);
gtk_widget_class_bind_action (widget_class, keysym, 0,
"focus.move", "i",
direction);
gtk_widget_class_bind_action (widget_class, keysym, GDK_CONTROL_MASK,
"focus.move", "i",
direction);
gtk_widget_class_bind_action (widget_class, keypad_keysym, 0,
"focus.move", "i",
direction);
gtk_widget_class_bind_action (widget_class, keypad_keysym, GDK_CONTROL_MASK,
"focus.move", "i",
direction);
}
static guint32
......@@ -1134,6 +1133,16 @@ gtk_window_class_init (GtkWindowClass *klass)
gtk_widget_class_install_action (widget_class, "focus.activate", NULL,
gtk_window_activate_focus_activate);
/**
* GtkWindow|focus.move:
* @direction: a #GtkDirectionType indicating the direction to move fous in
*
* The focus.move action moves the focus in the given direction.
*/
gtk_widget_class_install_action (widget_class, "focus.move", "i",
gtk_window_activate_focus_move);
/**
* GtkWindow|debugging.enable:
* @toggle: whether to toggle or enable
......@@ -6029,6 +6038,18 @@ gtk_window_move_focus (GtkWidget *widget,
gtk_window_set_focus (GTK_WINDOW (widget), NULL);
}
static void
gtk_window_activate_focus_move (GtkWidget *widget,
const char *action_name,
GVariant *parameter)
{
GtkDirectionType dir;
dir = g_variant_get_int32 (parameter);
dir = CLAMP (dir, GTK_DIR_TAB_FORWARD, GTK_DIR_RIGHT);
gtk_window_move_focus (widget, dir);
}
/**
* gtk_window_set_focus:
* @window: a #GtkWindow
......
......@@ -104,7 +104,7 @@ generate_focus_chain (GtkWidget *window,
while (TRUE)
{
g_signal_emit_by_name (window, "move-focus", dir);
gtk_widget_activate_action (window, "focus.move", "i", dir);
focus = gtk_window_get_focus (GTK_WINDOW (window));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment