From e77da6c140f777ef17c446feb041a3da9714b0c8 Mon Sep 17 00:00:00 2001 From: Bill Haneman Date: Thu, 26 Aug 2004 15:42:15 +0000 Subject: [PATCH] Fix for #131226, can select single listview child in multi-select mode via keyboard. From padraig.obriain. --- ChangeLog | 9 +++++++++ ChangeLog.pre-2-10 | 9 +++++++++ ChangeLog.pre-2-6 | 9 +++++++++ ChangeLog.pre-2-8 | 9 +++++++++ gtk/gtktreeview.c | 25 +++++++++++++++++++++++++ 5 files changed, 61 insertions(+) diff --git a/ChangeLog b/ChangeLog index 848382cea3..bef8308c0b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2004-08-26 Bill Haneman + + * gtk/gtktreeview: + (gtk_tree_view_move_cursor_up_down): + If a multi-selection list contains only one item, + select it on cursor_up or cursor_down. + Fixes bug #131226. + [patch from Padraig O'Briain] + 2004-08-22 Robert Ögren On Win32, make graphical tablets work on multi-monitor systems. diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 848382cea3..bef8308c0b 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,12 @@ +2004-08-26 Bill Haneman + + * gtk/gtktreeview: + (gtk_tree_view_move_cursor_up_down): + If a multi-selection list contains only one item, + select it on cursor_up or cursor_down. + Fixes bug #131226. + [patch from Padraig O'Briain] + 2004-08-22 Robert Ögren On Win32, make graphical tablets work on multi-monitor systems. diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 848382cea3..bef8308c0b 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,12 @@ +2004-08-26 Bill Haneman + + * gtk/gtktreeview: + (gtk_tree_view_move_cursor_up_down): + If a multi-selection list contains only one item, + select it on cursor_up or cursor_down. + Fixes bug #131226. + [patch from Padraig O'Briain] + 2004-08-22 Robert Ögren On Win32, make graphical tablets work on multi-monitor systems. diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 848382cea3..bef8308c0b 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,12 @@ +2004-08-26 Bill Haneman + + * gtk/gtktreeview: + (gtk_tree_view_move_cursor_up_down): + If a multi-selection list contains only one item, + select it on cursor_up or cursor_down. + Fixes bug #131226. + [patch from Padraig O'Briain] + 2004-08-22 Robert Ögren On Win32, make graphical tablets work on multi-monitor systems. diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c index 83402859c0..6802498603 100644 --- a/gtk/gtktreeview.c +++ b/gtk/gtktreeview.c @@ -8116,6 +8116,31 @@ gtk_tree_view_move_cursor_up_down (GtkTreeView *tree_view, _gtk_rbtree_next_full (cursor_tree, cursor_node, &new_cursor_tree, &new_cursor_node); + /* + * If the list has only one item and multi-selection is set then select + * the row. + */ + if (tree_view->priv->selection->type == GTK_SELECTION_MULTIPLE && + new_cursor_node == NULL) + { + if (count == -1) + _gtk_rbtree_next_full (cursor_tree, cursor_node, + &new_cursor_tree, &new_cursor_node); + else + _gtk_rbtree_prev_full (cursor_tree, cursor_node, + &new_cursor_tree, &new_cursor_node); + + if (new_cursor_node == NULL) + { + new_cursor_node = cursor_node; + new_cursor_tree = cursor_tree; + } + else + { + new_cursor_node = NULL; + } + } + if (new_cursor_node) { cursor_path = _gtk_tree_view_find_path (tree_view, new_cursor_tree, new_cursor_node);