From 46d888d5eb3a3197bf63ce00e99f1ea18ce55c79 Mon Sep 17 00:00:00 2001 From: Kristian Rietveld Date: Fri, 15 Aug 2003 17:09:43 +0000 Subject: [PATCH] Also support the up, down, left, right, home, end, page up and page down Fri Aug 15 19:04:00 2003 Kristian Rietveld * gtk/gtktreeview.c (gtk_tree_view_class_init), (gtk_tree_view_key_press), (gtk_tree_view_search_key_press_event): Also support the up, down, left, right, home, end, page up and page down keys on the numpad. (#119419, reported by Alex Larsson). --- ChangeLog | 7 +++ ChangeLog.pre-2-10 | 7 +++ ChangeLog.pre-2-4 | 7 +++ ChangeLog.pre-2-6 | 7 +++ ChangeLog.pre-2-8 | 7 +++ gtk/gtktreeview.c | 114 +++++++++++++++++++++++++++++++++++++-------- 6 files changed, 129 insertions(+), 20 deletions(-) diff --git a/ChangeLog b/ChangeLog index 64ab86daa6..1e45235815 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Fri Aug 15 19:04:00 2003 Kristian Rietveld + + * gtk/gtktreeview.c (gtk_tree_view_class_init), + (gtk_tree_view_key_press), (gtk_tree_view_search_key_press_event): + Also support the up, down, left, right, home, end, page up and + page down keys on the numpad. (#119419, reported by Alex Larsson). + Fri Aug 15 12:34:04 2003 Owen Taylor Fixes for X/Cygwin builds of GTK+ (#107623, Masahiro Sakai): diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 64ab86daa6..1e45235815 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,10 @@ +Fri Aug 15 19:04:00 2003 Kristian Rietveld + + * gtk/gtktreeview.c (gtk_tree_view_class_init), + (gtk_tree_view_key_press), (gtk_tree_view_search_key_press_event): + Also support the up, down, left, right, home, end, page up and + page down keys on the numpad. (#119419, reported by Alex Larsson). + Fri Aug 15 12:34:04 2003 Owen Taylor Fixes for X/Cygwin builds of GTK+ (#107623, Masahiro Sakai): diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 64ab86daa6..1e45235815 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,10 @@ +Fri Aug 15 19:04:00 2003 Kristian Rietveld + + * gtk/gtktreeview.c (gtk_tree_view_class_init), + (gtk_tree_view_key_press), (gtk_tree_view_search_key_press_event): + Also support the up, down, left, right, home, end, page up and + page down keys on the numpad. (#119419, reported by Alex Larsson). + Fri Aug 15 12:34:04 2003 Owen Taylor Fixes for X/Cygwin builds of GTK+ (#107623, Masahiro Sakai): diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 64ab86daa6..1e45235815 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,10 @@ +Fri Aug 15 19:04:00 2003 Kristian Rietveld + + * gtk/gtktreeview.c (gtk_tree_view_class_init), + (gtk_tree_view_key_press), (gtk_tree_view_search_key_press_event): + Also support the up, down, left, right, home, end, page up and + page down keys on the numpad. (#119419, reported by Alex Larsson). + Fri Aug 15 12:34:04 2003 Owen Taylor Fixes for X/Cygwin builds of GTK+ (#107623, Masahiro Sakai): diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 64ab86daa6..1e45235815 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,10 @@ +Fri Aug 15 19:04:00 2003 Kristian Rietveld + + * gtk/gtktreeview.c (gtk_tree_view_class_init), + (gtk_tree_view_key_press), (gtk_tree_view_search_key_press_event): + Also support the up, down, left, right, home, end, page up and + page down keys on the numpad. (#119419, reported by Alex Larsson). + Fri Aug 15 12:34:04 2003 Owen Taylor Fixes for X/Cygwin builds of GTK+ (#107623, Masahiro Sakai): diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c index fbfdd63e24..1f1892c748 100644 --- a/gtk/gtktreeview.c +++ b/gtk/gtktreeview.c @@ -822,9 +822,13 @@ G_PARAM_READABLE)); /* Key bindings */ gtk_tree_view_add_move_binding (binding_set, GDK_Up, 0, GTK_MOVEMENT_DISPLAY_LINES, -1); + gtk_tree_view_add_move_binding (binding_set, GDK_KP_Up, 0, + GTK_MOVEMENT_DISPLAY_LINES, -1); gtk_tree_view_add_move_binding (binding_set, GDK_Down, 0, GTK_MOVEMENT_DISPLAY_LINES, 1); + gtk_tree_view_add_move_binding (binding_set, GDK_KP_Down, 0, + GTK_MOVEMENT_DISPLAY_LINES, 1); gtk_tree_view_add_move_binding (binding_set, GDK_p, GDK_CONTROL_MASK, GTK_MOVEMENT_DISPLAY_LINES, -1); @@ -834,15 +838,24 @@ G_PARAM_READABLE)); gtk_tree_view_add_move_binding (binding_set, GDK_Home, 0, GTK_MOVEMENT_BUFFER_ENDS, -1); + gtk_tree_view_add_move_binding (binding_set, GDK_KP_Home, 0, + GTK_MOVEMENT_BUFFER_ENDS, -1); gtk_tree_view_add_move_binding (binding_set, GDK_End, 0, GTK_MOVEMENT_BUFFER_ENDS, 1); + gtk_tree_view_add_move_binding (binding_set, GDK_KP_End, 0, + GTK_MOVEMENT_BUFFER_ENDS, 1); gtk_tree_view_add_move_binding (binding_set, GDK_Page_Up, 0, GTK_MOVEMENT_PAGES, -1); + gtk_tree_view_add_move_binding (binding_set, GDK_KP_Page_Up, 0, + GTK_MOVEMENT_PAGES, -1); gtk_tree_view_add_move_binding (binding_set, GDK_Page_Down, 0, GTK_MOVEMENT_PAGES, 1); + gtk_tree_view_add_move_binding (binding_set, GDK_KP_Page_Down, 0, + GTK_MOVEMENT_PAGES, 1); + gtk_binding_entry_add_signal (binding_set, GDK_Right, 0, "move_cursor", 2, G_TYPE_ENUM, GTK_MOVEMENT_VISUAL_POSITIONS, @@ -852,22 +865,62 @@ G_PARAM_READABLE)); G_TYPE_ENUM, GTK_MOVEMENT_VISUAL_POSITIONS, G_TYPE_INT, -1); - gtk_binding_entry_add_signal (binding_set, GDK_Right, GDK_CONTROL_MASK, "move_cursor", 2, + gtk_binding_entry_add_signal (binding_set, GDK_KP_Right, 0, "move_cursor", 2, + G_TYPE_ENUM, GTK_MOVEMENT_VISUAL_POSITIONS, G_TYPE_INT, 1); - gtk_binding_entry_add_signal (binding_set, GDK_Left, GDK_CONTROL_MASK, "move_cursor", 2, + gtk_binding_entry_add_signal (binding_set, GDK_KP_Left, 0, "move_cursor", 2, G_TYPE_ENUM, GTK_MOVEMENT_VISUAL_POSITIONS, G_TYPE_INT, -1); - gtk_binding_entry_add_signal (binding_set, GDK_Right, GDK_CONTROL_MASK|GDK_SHIFT_MASK, "move_cursor", 2, + + gtk_binding_entry_add_signal (binding_set, GDK_Right, GDK_CONTROL_MASK, + "move_cursor", 2, G_TYPE_ENUM, GTK_MOVEMENT_VISUAL_POSITIONS, G_TYPE_INT, 1); - gtk_binding_entry_add_signal (binding_set, GDK_Left, GDK_CONTROL_MASK|GDK_SHIFT_MASK, "move_cursor", 2, + gtk_binding_entry_add_signal (binding_set, GDK_Left, GDK_CONTROL_MASK, + "move_cursor", 2, G_TYPE_ENUM, GTK_MOVEMENT_VISUAL_POSITIONS, G_TYPE_INT, -1); + gtk_binding_entry_add_signal (binding_set, GDK_KP_Right, GDK_CONTROL_MASK, + "move_cursor", 2, + G_TYPE_ENUM, GTK_MOVEMENT_VISUAL_POSITIONS, + G_TYPE_INT, 1); + + gtk_binding_entry_add_signal (binding_set, GDK_KP_Left, GDK_CONTROL_MASK, + "move_cursor", 2, + G_TYPE_ENUM, GTK_MOVEMENT_VISUAL_POSITIONS, + G_TYPE_INT, -1); + + + gtk_binding_entry_add_signal (binding_set, GDK_Right, + GDK_CONTROL_MASK|GDK_SHIFT_MASK, + "move_cursor", 2, + G_TYPE_ENUM, GTK_MOVEMENT_VISUAL_POSITIONS, + G_TYPE_INT, 1); + + gtk_binding_entry_add_signal (binding_set, GDK_Left, + GDK_CONTROL_MASK|GDK_SHIFT_MASK, + "move_cursor", 2, + G_TYPE_ENUM, GTK_MOVEMENT_VISUAL_POSITIONS, + G_TYPE_INT, -1); + + gtk_binding_entry_add_signal (binding_set, GDK_KP_Right, + GDK_CONTROL_MASK|GDK_SHIFT_MASK, + "move_cursor", 2, + G_TYPE_ENUM, GTK_MOVEMENT_VISUAL_POSITIONS, + G_TYPE_INT, 1); + + gtk_binding_entry_add_signal (binding_set, GDK_KP_Left, + GDK_CONTROL_MASK|GDK_SHIFT_MASK, + "move_cursor", 2, + G_TYPE_ENUM, GTK_MOVEMENT_VISUAL_POSITIONS, + G_TYPE_INT, -1); + + gtk_binding_entry_add_signal (binding_set, GDK_space, GDK_CONTROL_MASK, "toggle_cursor_row", 0); gtk_binding_entry_add_signal (binding_set, GDK_a, GDK_CONTROL_MASK, "select_all", 0); @@ -910,7 +963,13 @@ G_PARAM_READABLE)); G_TYPE_BOOLEAN, FALSE, G_TYPE_BOOLEAN, TRUE, G_TYPE_BOOLEAN, TRUE); - gtk_binding_entry_add_signal (binding_set, GDK_Right, GDK_SHIFT_MASK, "expand_collapse_cursor_row", 3, + gtk_binding_entry_add_signal (binding_set, GDK_Right, GDK_SHIFT_MASK, + "expand_collapse_cursor_row", 3, + G_TYPE_BOOLEAN, TRUE, + G_TYPE_BOOLEAN, TRUE, + G_TYPE_BOOLEAN, TRUE); + gtk_binding_entry_add_signal (binding_set, GDK_KP_Right, GDK_SHIFT_MASK, + "expand_collapse_cursor_row", 3, G_TYPE_BOOLEAN, TRUE, G_TYPE_BOOLEAN, TRUE, G_TYPE_BOOLEAN, TRUE); @@ -931,7 +990,13 @@ G_PARAM_READABLE)); G_TYPE_BOOLEAN, FALSE, G_TYPE_BOOLEAN, FALSE, G_TYPE_BOOLEAN, TRUE); - gtk_binding_entry_add_signal (binding_set, GDK_Left, GDK_SHIFT_MASK, "expand_collapse_cursor_row", 3, + gtk_binding_entry_add_signal (binding_set, GDK_Left, GDK_SHIFT_MASK, + "expand_collapse_cursor_row", 3, + G_TYPE_BOOLEAN, FALSE, + G_TYPE_BOOLEAN, FALSE, + G_TYPE_BOOLEAN, TRUE); + gtk_binding_entry_add_signal (binding_set, GDK_KP_Left, GDK_SHIFT_MASK, + "expand_collapse_cursor_row", 3, G_TYPE_BOOLEAN, FALSE, G_TYPE_BOOLEAN, FALSE, G_TYPE_BOOLEAN, TRUE); @@ -3564,7 +3629,8 @@ gtk_tree_view_key_press (GtkWidget *widget, /* FIXME: this is prolly broken when we go bidi */ if (tree_view->priv->columns && (event->state & GDK_SHIFT_MASK) - && (event->keyval == GDK_Left || event->keyval == GDK_Right)) + && (event->keyval == GDK_Left || event->keyval == GDK_KP_Left + || event->keyval == GDK_Right || event->keyval == GDK_KP_Right)) { list = tree_view->priv->columns; while (list) @@ -3575,7 +3641,7 @@ gtk_tree_view_key_press (GtkWidget *widget, if (!column->resizable) return TRUE; - if (event->keyval == GDK_Left) + if (event->keyval == GDK_Left || event->keyval == GDK_KP_Left) { column->resized_width = MAX (column->resized_width, column->width); @@ -3595,7 +3661,8 @@ gtk_tree_view_key_press (GtkWidget *widget, gtk_widget_queue_resize (widget); return TRUE; } - else if (event->keyval == GDK_Right) + else if (event->keyval == GDK_Right + || event->keyval == GDK_KP_Right) { column->resized_width = MAX (column->resized_width, column->width); @@ -3615,8 +3682,10 @@ gtk_tree_view_key_press (GtkWidget *widget, /* FIXME: broken when we go bidi? */ if (tree_view->priv->columns && (event->state & GDK_CONTROL_MASK) && - (event->keyval == GDK_Left || event->keyval == GDK_Right - || event->keyval == GDK_Home || event->keyval == GDK_End)) + (event->keyval == GDK_Left || event->keyval == GDK_KP_Left + || event->keyval == GDK_Right || event->keyval == GDK_KP_Right + || event->keyval == GDK_Home || event->keyval == GDK_KP_Home + || event->keyval == GDK_End || event->keyval == GDK_KP_End)) { list = tree_view->priv->columns; while (list) @@ -3624,7 +3693,7 @@ gtk_tree_view_key_press (GtkWidget *widget, GtkTreeViewColumn *column = GTK_TREE_VIEW_COLUMN (list->data); if (GTK_WIDGET_HAS_FOCUS (column->button)) { - if (event->keyval == GDK_Left) + if (event->keyval == GDK_Left || event->keyval == GDK_KP_Left) { GtkTreeViewColumn *col; col = gtk_tree_view_get_drop_column (tree_view, column, DROP_LEFT); @@ -3632,7 +3701,8 @@ gtk_tree_view_key_press (GtkWidget *widget, gtk_tree_view_move_column_after (tree_view, column, col); return TRUE; } - else if (event->keyval == GDK_Right) + else if (event->keyval == GDK_Right + || event->keyval == GDK_KP_Right) { GtkTreeViewColumn *col; col = gtk_tree_view_get_drop_column (tree_view, column, DROP_RIGHT); @@ -3640,7 +3710,8 @@ gtk_tree_view_key_press (GtkWidget *widget, gtk_tree_view_move_column_after (tree_view, column, col); return TRUE; } - else if (event->keyval == GDK_Home) + else if (event->keyval == GDK_Home + || event->keyval == GDK_KP_Home) { GtkTreeViewColumn *col; col = gtk_tree_view_get_drop_column (tree_view, column, DROP_HOME); @@ -3648,7 +3719,7 @@ gtk_tree_view_key_press (GtkWidget *widget, gtk_tree_view_move_column_after (tree_view, column, col); return TRUE; } - else if (event->keyval == GDK_End) + else if (event->keyval == GDK_End || event->keyval == GDK_KP_End) { GtkTreeViewColumn *col; col = gtk_tree_view_get_drop_column (tree_view, column, DROP_END); @@ -3664,7 +3735,8 @@ gtk_tree_view_key_press (GtkWidget *widget, /* FIXME: this is prolly broken when we go bidi */ if (tree_view->priv->columns && GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_HEADERS_VISIBLE) && - (event->keyval == GDK_Left || event->keyval == GDK_Right)) + (event->keyval == GDK_Left || event->keyval == GDK_KP_Left + || event->keyval == GDK_Right || event->keyval == GDK_KP_Right)) { gint width = 0; list = tree_view->priv->columns; @@ -3673,7 +3745,8 @@ gtk_tree_view_key_press (GtkWidget *widget, GtkTreeViewColumn *column = GTK_TREE_VIEW_COLUMN (list->data); if (GTK_WIDGET_HAS_FOCUS (column->button)) { - if (event->keyval == GDK_Left && list->prev) + if ((event->keyval == GDK_Left || event->keyval == GDK_KP_Left) + && list->prev) { GList *tmp; @@ -3690,7 +3763,8 @@ gtk_tree_view_key_press (GtkWidget *widget, gtk_adjustment_set_value (tree_view->priv->hadjustment, CLAMP (width, tree_view->priv->hadjustment->lower, tree_view->priv->hadjustment->upper - tree_view->priv->hadjustment->page_size)); return TRUE; } - else if (event->keyval == GDK_Right && list->next) + else if ((event->keyval == GDK_Right + || event->keyval == GDK_KP_Right) && list->next) { GList *tmp; @@ -10953,14 +11027,14 @@ gtk_tree_view_search_key_press_event (GtkWidget *widget, } /* select previous matching iter */ - if (event->keyval == GDK_Up) + if (event->keyval == GDK_Up || event->keyval == GDK_KP_Up) { gtk_tree_view_search_move (widget, tree_view, TRUE); return TRUE; } /* select next matching iter */ - if (event->keyval == GDK_Down) + if (event->keyval == GDK_Down || event->keyval == GDK_KP_Down) { gtk_tree_view_search_move (widget, tree_view, FALSE); return TRUE;