Index: gtktreeview.c
===================================================================
RCS file: /cvs/gnome/gtk+/gtk/gtktreeview.c,v
retrieving revision 1.376
diff -u -p -r1.376 gtktreeview.c
--- gtktreeview.c	2 Jun 2004 19:21:06 -0000	1.376
+++ gtktreeview.c	3 Jun 2004 08:34:34 -0000
@@ -8123,6 +8123,31 @@ gtk_tree_view_move_cursor_up_down (GtkTr
     _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);
