mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-14 20:51:07 +00:00
text: Port to widget shortcuts
This commit is contained in:
parent
17eef48835
commit
d62be573ad
276
gtk/gtktext.c
276
gtk/gtktext.c
@ -685,7 +685,7 @@ G_DEFINE_TYPE_WITH_CODE (GtkText, gtk_text, GTK_TYPE_WIDGET,
|
||||
G_IMPLEMENT_INTERFACE (GTK_TYPE_EDITABLE, gtk_text_editable_init))
|
||||
|
||||
static void
|
||||
add_move_binding (GtkBindingSet *binding_set,
|
||||
add_move_binding (GtkWidgetClass *widget_class,
|
||||
guint keyval,
|
||||
guint modmask,
|
||||
GtkMovementStep step,
|
||||
@ -693,28 +693,22 @@ add_move_binding (GtkBindingSet *binding_set,
|
||||
{
|
||||
g_return_if_fail ((modmask & GDK_SHIFT_MASK) == 0);
|
||||
|
||||
gtk_binding_entry_add_signal (binding_set, keyval, modmask,
|
||||
"move-cursor", 3,
|
||||
G_TYPE_ENUM, step,
|
||||
G_TYPE_INT, count,
|
||||
G_TYPE_BOOLEAN, FALSE);
|
||||
|
||||
gtk_widget_class_add_binding_signal (widget_class,
|
||||
keyval, modmask,
|
||||
"move-cursor",
|
||||
"(iib)", step, count, FALSE);
|
||||
/* Selection-extending version */
|
||||
gtk_binding_entry_add_signal (binding_set, keyval, modmask | GDK_SHIFT_MASK,
|
||||
"move-cursor", 3,
|
||||
G_TYPE_ENUM, step,
|
||||
G_TYPE_INT, count,
|
||||
G_TYPE_BOOLEAN, TRUE);
|
||||
gtk_widget_class_add_binding_signal (widget_class,
|
||||
keyval, modmask | GDK_SHIFT_MASK,
|
||||
"move-cursor",
|
||||
"(iib)", step, count, TRUE);
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_text_class_init (GtkTextClass *class)
|
||||
{
|
||||
GObjectClass *gobject_class = G_OBJECT_CLASS (class);
|
||||
GtkWidgetClass *widget_class;
|
||||
GtkBindingSet *binding_set;
|
||||
|
||||
widget_class = (GtkWidgetClass*) class;
|
||||
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (class);
|
||||
|
||||
gobject_class->dispose = gtk_text_dispose;
|
||||
gobject_class->finalize = gtk_text_finalize;
|
||||
@ -1207,182 +1201,202 @@ gtk_text_class_init (GtkTextClass *class)
|
||||
* Key bindings
|
||||
*/
|
||||
|
||||
binding_set = gtk_binding_set_by_class (class);
|
||||
|
||||
/* Moving the insertion point */
|
||||
add_move_binding (binding_set, GDK_KEY_Right, 0,
|
||||
add_move_binding (widget_class, GDK_KEY_Right, 0,
|
||||
GTK_MOVEMENT_VISUAL_POSITIONS, 1);
|
||||
|
||||
add_move_binding (binding_set, GDK_KEY_Left, 0,
|
||||
add_move_binding (widget_class, GDK_KEY_Left, 0,
|
||||
GTK_MOVEMENT_VISUAL_POSITIONS, -1);
|
||||
|
||||
add_move_binding (binding_set, GDK_KEY_KP_Right, 0,
|
||||
add_move_binding (widget_class, GDK_KEY_KP_Right, 0,
|
||||
GTK_MOVEMENT_VISUAL_POSITIONS, 1);
|
||||
|
||||
add_move_binding (binding_set, GDK_KEY_KP_Left, 0,
|
||||
add_move_binding (widget_class, GDK_KEY_KP_Left, 0,
|
||||
GTK_MOVEMENT_VISUAL_POSITIONS, -1);
|
||||
|
||||
add_move_binding (binding_set, GDK_KEY_Right, GDK_CONTROL_MASK,
|
||||
add_move_binding (widget_class, GDK_KEY_Right, GDK_CONTROL_MASK,
|
||||
GTK_MOVEMENT_WORDS, 1);
|
||||
|
||||
add_move_binding (binding_set, GDK_KEY_Left, GDK_CONTROL_MASK,
|
||||
add_move_binding (widget_class, GDK_KEY_Left, GDK_CONTROL_MASK,
|
||||
GTK_MOVEMENT_WORDS, -1);
|
||||
|
||||
add_move_binding (binding_set, GDK_KEY_KP_Right, GDK_CONTROL_MASK,
|
||||
add_move_binding (widget_class, GDK_KEY_KP_Right, GDK_CONTROL_MASK,
|
||||
GTK_MOVEMENT_WORDS, 1);
|
||||
|
||||
add_move_binding (binding_set, GDK_KEY_KP_Left, GDK_CONTROL_MASK,
|
||||
add_move_binding (widget_class, GDK_KEY_KP_Left, GDK_CONTROL_MASK,
|
||||
GTK_MOVEMENT_WORDS, -1);
|
||||
|
||||
add_move_binding (binding_set, GDK_KEY_Home, 0,
|
||||
add_move_binding (widget_class, GDK_KEY_Home, 0,
|
||||
GTK_MOVEMENT_DISPLAY_LINE_ENDS, -1);
|
||||
|
||||
add_move_binding (binding_set, GDK_KEY_End, 0,
|
||||
add_move_binding (widget_class, GDK_KEY_End, 0,
|
||||
GTK_MOVEMENT_DISPLAY_LINE_ENDS, 1);
|
||||
|
||||
add_move_binding (binding_set, GDK_KEY_KP_Home, 0,
|
||||
add_move_binding (widget_class, GDK_KEY_KP_Home, 0,
|
||||
GTK_MOVEMENT_DISPLAY_LINE_ENDS, -1);
|
||||
|
||||
add_move_binding (binding_set, GDK_KEY_KP_End, 0,
|
||||
add_move_binding (widget_class, GDK_KEY_KP_End, 0,
|
||||
GTK_MOVEMENT_DISPLAY_LINE_ENDS, 1);
|
||||
|
||||
add_move_binding (binding_set, GDK_KEY_Home, GDK_CONTROL_MASK,
|
||||
add_move_binding (widget_class, GDK_KEY_Home, GDK_CONTROL_MASK,
|
||||
GTK_MOVEMENT_BUFFER_ENDS, -1);
|
||||
|
||||
add_move_binding (binding_set, GDK_KEY_End, GDK_CONTROL_MASK,
|
||||
add_move_binding (widget_class, GDK_KEY_End, GDK_CONTROL_MASK,
|
||||
GTK_MOVEMENT_BUFFER_ENDS, 1);
|
||||
|
||||
add_move_binding (binding_set, GDK_KEY_KP_Home, GDK_CONTROL_MASK,
|
||||
add_move_binding (widget_class, GDK_KEY_KP_Home, GDK_CONTROL_MASK,
|
||||
GTK_MOVEMENT_BUFFER_ENDS, -1);
|
||||
|
||||
add_move_binding (binding_set, GDK_KEY_KP_End, GDK_CONTROL_MASK,
|
||||
add_move_binding (widget_class, GDK_KEY_KP_End, GDK_CONTROL_MASK,
|
||||
GTK_MOVEMENT_BUFFER_ENDS, 1);
|
||||
|
||||
/* Select all
|
||||
*/
|
||||
gtk_binding_entry_add_signal (binding_set, GDK_KEY_a, GDK_CONTROL_MASK,
|
||||
"move-cursor", 3,
|
||||
GTK_TYPE_MOVEMENT_STEP, GTK_MOVEMENT_BUFFER_ENDS,
|
||||
G_TYPE_INT, -1,
|
||||
G_TYPE_BOOLEAN, FALSE);
|
||||
gtk_binding_entry_add_signal (binding_set, GDK_KEY_a, GDK_CONTROL_MASK,
|
||||
"move-cursor", 3,
|
||||
GTK_TYPE_MOVEMENT_STEP, GTK_MOVEMENT_BUFFER_ENDS,
|
||||
G_TYPE_INT, 1,
|
||||
G_TYPE_BOOLEAN, TRUE);
|
||||
gtk_widget_class_add_binding (widget_class,
|
||||
GDK_KEY_a, GDK_CONTROL_MASK,
|
||||
(GtkShortcutFunc) gtk_text_select_all,
|
||||
NULL);
|
||||
|
||||
gtk_binding_entry_add_signal (binding_set, GDK_KEY_slash, GDK_CONTROL_MASK,
|
||||
"move-cursor", 3,
|
||||
GTK_TYPE_MOVEMENT_STEP, GTK_MOVEMENT_BUFFER_ENDS,
|
||||
G_TYPE_INT, -1,
|
||||
G_TYPE_BOOLEAN, FALSE);
|
||||
gtk_binding_entry_add_signal (binding_set, GDK_KEY_slash, GDK_CONTROL_MASK,
|
||||
"move-cursor", 3,
|
||||
GTK_TYPE_MOVEMENT_STEP, GTK_MOVEMENT_BUFFER_ENDS,
|
||||
G_TYPE_INT, 1,
|
||||
G_TYPE_BOOLEAN, TRUE);
|
||||
gtk_widget_class_add_binding (widget_class,
|
||||
GDK_KEY_slash, GDK_CONTROL_MASK,
|
||||
(GtkShortcutFunc) gtk_text_select_all,
|
||||
NULL);
|
||||
/* Unselect all
|
||||
*/
|
||||
gtk_binding_entry_add_signal (binding_set, GDK_KEY_backslash, GDK_CONTROL_MASK,
|
||||
"move-cursor", 3,
|
||||
GTK_TYPE_MOVEMENT_STEP, GTK_MOVEMENT_VISUAL_POSITIONS,
|
||||
G_TYPE_INT, 0,
|
||||
G_TYPE_BOOLEAN, FALSE);
|
||||
gtk_binding_entry_add_signal (binding_set, GDK_KEY_a, GDK_SHIFT_MASK | GDK_CONTROL_MASK,
|
||||
"move-cursor", 3,
|
||||
GTK_TYPE_MOVEMENT_STEP, GTK_MOVEMENT_VISUAL_POSITIONS,
|
||||
G_TYPE_INT, 0,
|
||||
G_TYPE_BOOLEAN, FALSE);
|
||||
gtk_widget_class_add_binding_signal (widget_class,
|
||||
GDK_KEY_backslash, GDK_CONTROL_MASK,
|
||||
"move-cursor",
|
||||
"(iib)", GTK_MOVEMENT_VISUAL_POSITIONS, 0, FALSE);
|
||||
gtk_widget_class_add_binding_signal (widget_class,
|
||||
GDK_KEY_a, GDK_SHIFT_MASK | GDK_CONTROL_MASK,
|
||||
"move-cursor",
|
||||
"(iib)", GTK_MOVEMENT_VISUAL_POSITIONS, 0, FALSE);
|
||||
|
||||
/* Activate
|
||||
*/
|
||||
gtk_binding_entry_add_signal (binding_set, GDK_KEY_Return, 0,
|
||||
"activate", 0);
|
||||
gtk_binding_entry_add_signal (binding_set, GDK_KEY_ISO_Enter, 0,
|
||||
"activate", 0);
|
||||
gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Enter, 0,
|
||||
"activate", 0);
|
||||
gtk_widget_class_add_binding_signal (widget_class, GDK_KEY_Return, 0,
|
||||
"activate",
|
||||
NULL);
|
||||
gtk_widget_class_add_binding_signal (widget_class, GDK_KEY_ISO_Enter, 0,
|
||||
"activate",
|
||||
NULL);
|
||||
gtk_widget_class_add_binding_signal (widget_class, GDK_KEY_KP_Enter, 0,
|
||||
"activate",
|
||||
NULL);
|
||||
|
||||
/* Deleting text */
|
||||
gtk_binding_entry_add_signal (binding_set, GDK_KEY_Delete, 0,
|
||||
"delete-from-cursor", 2,
|
||||
G_TYPE_ENUM, GTK_DELETE_CHARS,
|
||||
G_TYPE_INT, 1);
|
||||
gtk_widget_class_add_binding_signal (widget_class,
|
||||
GDK_KEY_Delete, 0,
|
||||
"delete-from-cursor",
|
||||
"(ii)", GTK_DELETE_CHARS, 1);
|
||||
|
||||
gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Delete, 0,
|
||||
"delete-from-cursor", 2,
|
||||
G_TYPE_ENUM, GTK_DELETE_CHARS,
|
||||
G_TYPE_INT, 1);
|
||||
gtk_widget_class_add_binding_signal (widget_class,
|
||||
GDK_KEY_KP_Delete, 0,
|
||||
"delete-from-cursor",
|
||||
"(ii)", GTK_DELETE_CHARS, 1);
|
||||
|
||||
gtk_binding_entry_add_signal (binding_set, GDK_KEY_BackSpace, 0,
|
||||
"backspace", 0);
|
||||
gtk_widget_class_add_binding_signal (widget_class,
|
||||
GDK_KEY_BackSpace, 0,
|
||||
"backspace",
|
||||
NULL);
|
||||
|
||||
gtk_binding_entry_add_signal (binding_set, GDK_KEY_u, GDK_CONTROL_MASK,
|
||||
"delete-from-cursor", 2,
|
||||
G_TYPE_ENUM, GTK_DELETE_PARAGRAPH_ENDS,
|
||||
G_TYPE_INT, -1);
|
||||
gtk_widget_class_add_binding_signal (widget_class,
|
||||
GDK_KEY_u, GDK_CONTROL_MASK,
|
||||
"delete-from-cursor",
|
||||
"(ii)", GTK_DELETE_PARAGRAPH_ENDS, -1);
|
||||
|
||||
/* Make this do the same as Backspace, to help with mis-typing */
|
||||
gtk_binding_entry_add_signal (binding_set, GDK_KEY_BackSpace, GDK_SHIFT_MASK,
|
||||
"backspace", 0);
|
||||
gtk_widget_class_add_binding_signal (widget_class,
|
||||
GDK_KEY_BackSpace, GDK_SHIFT_MASK,
|
||||
"backspace",
|
||||
NULL);
|
||||
|
||||
gtk_binding_entry_add_signal (binding_set, GDK_KEY_Delete, GDK_CONTROL_MASK,
|
||||
"delete-from-cursor", 2,
|
||||
G_TYPE_ENUM, GTK_DELETE_WORD_ENDS,
|
||||
G_TYPE_INT, 1);
|
||||
gtk_widget_class_add_binding_signal (widget_class,
|
||||
GDK_KEY_Delete, GDK_CONTROL_MASK,
|
||||
"delete-from-cursor",
|
||||
"(ii)", GTK_DELETE_WORD_ENDS, 1);
|
||||
|
||||
gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Delete, GDK_CONTROL_MASK,
|
||||
"delete-from-cursor", 2,
|
||||
G_TYPE_ENUM, GTK_DELETE_WORD_ENDS,
|
||||
G_TYPE_INT, 1);
|
||||
gtk_widget_class_add_binding_signal (widget_class,
|
||||
GDK_KEY_KP_Delete, GDK_CONTROL_MASK,
|
||||
"delete-from-cursor",
|
||||
"(ii)", GTK_DELETE_WORD_ENDS, 1);
|
||||
|
||||
gtk_binding_entry_add_signal (binding_set, GDK_KEY_BackSpace, GDK_CONTROL_MASK,
|
||||
"delete-from-cursor", 2,
|
||||
G_TYPE_ENUM, GTK_DELETE_WORD_ENDS,
|
||||
G_TYPE_INT, -1);
|
||||
gtk_widget_class_add_binding_signal (widget_class,
|
||||
GDK_KEY_BackSpace, GDK_CONTROL_MASK,
|
||||
"delete-from-cursor",
|
||||
"(ii)", GTK_DELETE_WORD_ENDS, -1);
|
||||
|
||||
/* Cut/copy/paste */
|
||||
gtk_widget_class_add_binding_signal (widget_class,
|
||||
GDK_KEY_x, GDK_CONTROL_MASK,
|
||||
"cut-clipboard",
|
||||
NULL);
|
||||
gtk_widget_class_add_binding_signal (widget_class,
|
||||
GDK_KEY_c, GDK_CONTROL_MASK,
|
||||
"copy-clipboard",
|
||||
NULL);
|
||||
gtk_widget_class_add_binding_signal (widget_class,
|
||||
GDK_KEY_v, GDK_CONTROL_MASK,
|
||||
"paste-clipboard",
|
||||
NULL);
|
||||
|
||||
gtk_binding_entry_add_signal (binding_set, GDK_KEY_x, GDK_CONTROL_MASK,
|
||||
"cut-clipboard", 0);
|
||||
gtk_binding_entry_add_signal (binding_set, GDK_KEY_c, GDK_CONTROL_MASK,
|
||||
"copy-clipboard", 0);
|
||||
gtk_binding_entry_add_signal (binding_set, GDK_KEY_v, GDK_CONTROL_MASK,
|
||||
"paste-clipboard", 0);
|
||||
gtk_widget_class_add_binding_signal (widget_class,
|
||||
GDK_KEY_Delete, GDK_SHIFT_MASK,
|
||||
"cut-clipboard",
|
||||
NULL);
|
||||
gtk_widget_class_add_binding_signal (widget_class,
|
||||
GDK_KEY_Insert, GDK_CONTROL_MASK,
|
||||
"copy-clipboard",
|
||||
NULL);
|
||||
gtk_widget_class_add_binding_signal (widget_class,
|
||||
GDK_KEY_Insert, GDK_SHIFT_MASK,
|
||||
"paste-clipboard",
|
||||
NULL);
|
||||
|
||||
gtk_binding_entry_add_signal (binding_set, GDK_KEY_Delete, GDK_SHIFT_MASK,
|
||||
"cut-clipboard", 0);
|
||||
gtk_binding_entry_add_signal (binding_set, GDK_KEY_Insert, GDK_CONTROL_MASK,
|
||||
"copy-clipboard", 0);
|
||||
gtk_binding_entry_add_signal (binding_set, GDK_KEY_Insert, GDK_SHIFT_MASK,
|
||||
"paste-clipboard", 0);
|
||||
|
||||
gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Delete, GDK_SHIFT_MASK,
|
||||
"cut-clipboard", 0);
|
||||
gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Insert, GDK_CONTROL_MASK,
|
||||
"copy-clipboard", 0);
|
||||
gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Insert, GDK_SHIFT_MASK,
|
||||
"paste-clipboard", 0);
|
||||
gtk_widget_class_add_binding_signal (widget_class,
|
||||
GDK_KEY_KP_Delete, GDK_SHIFT_MASK,
|
||||
"cut-clipboard",
|
||||
NULL);
|
||||
gtk_widget_class_add_binding_signal (widget_class,
|
||||
GDK_KEY_KP_Insert, GDK_CONTROL_MASK,
|
||||
"copy-clipboard",
|
||||
NULL);
|
||||
gtk_widget_class_add_binding_signal (widget_class,
|
||||
GDK_KEY_KP_Insert, GDK_SHIFT_MASK,
|
||||
"paste-clipboard",
|
||||
NULL);
|
||||
|
||||
/* Overwrite */
|
||||
gtk_binding_entry_add_signal (binding_set, GDK_KEY_Insert, 0,
|
||||
"toggle-overwrite", 0);
|
||||
gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Insert, 0,
|
||||
"toggle-overwrite", 0);
|
||||
gtk_widget_class_add_binding_signal (widget_class,
|
||||
GDK_KEY_Insert, 0,
|
||||
"toggle-overwrite",
|
||||
NULL);
|
||||
gtk_widget_class_add_binding_signal (widget_class,
|
||||
GDK_KEY_KP_Insert, 0,
|
||||
"toggle-overwrite",
|
||||
NULL);
|
||||
|
||||
/* Emoji */
|
||||
gtk_binding_entry_add_signal (binding_set, GDK_KEY_period, GDK_CONTROL_MASK,
|
||||
"insert-emoji", 0);
|
||||
gtk_binding_entry_add_signal (binding_set, GDK_KEY_semicolon, GDK_CONTROL_MASK,
|
||||
"insert-emoji", 0);
|
||||
gtk_widget_class_add_binding_signal (widget_class,
|
||||
GDK_KEY_period, GDK_CONTROL_MASK,
|
||||
"insert-emoji",
|
||||
NULL);
|
||||
gtk_widget_class_add_binding_signal (widget_class,
|
||||
GDK_KEY_semicolon, GDK_CONTROL_MASK,
|
||||
"insert-emoji",
|
||||
NULL);
|
||||
|
||||
/* Undo/Redo */
|
||||
gtk_binding_entry_add_action (binding_set, GDK_KEY_z, GDK_CONTROL_MASK,
|
||||
"text.undo", NULL);
|
||||
gtk_binding_entry_add_action (binding_set, GDK_KEY_y, GDK_CONTROL_MASK,
|
||||
"text.redo", NULL);
|
||||
gtk_binding_entry_add_action (binding_set, GDK_KEY_z, GDK_CONTROL_MASK | GDK_SHIFT_MASK,
|
||||
"text.redo", NULL);
|
||||
gtk_widget_class_add_binding_action (widget_class,
|
||||
GDK_KEY_z, GDK_CONTROL_MASK,
|
||||
"text.undo", NULL);
|
||||
gtk_widget_class_add_binding_action (widget_class,
|
||||
GDK_KEY_y, GDK_CONTROL_MASK,
|
||||
"text.redo", NULL);
|
||||
gtk_widget_class_add_binding_action (widget_class,
|
||||
GDK_KEY_z, GDK_CONTROL_MASK | GDK_SHIFT_MASK,
|
||||
"text.redo", NULL);
|
||||
|
||||
|
||||
gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_TEXT_ACCESSIBLE);
|
||||
gtk_widget_class_set_css_name (widget_class, I_("text"));
|
||||
|
Loading…
Reference in New Issue
Block a user