if we can't go up/down, consult gtk_widget_keynav_failed() and leave the

2006-11-24  Michael Natterer  <mitch@imendio.com>

	* gtk/gtktreeview.c (gtk_tree_view_move_cursor_up_down): if we
	can't go up/down, consult gtk_widget_keynav_failed() and leave the
	widget if it returns FALSE (bug #322640).
This commit is contained in:
Michael Natterer
2006-11-24 13:18:55 +00:00
committed by Michael Natterer
parent ddf72dc50a
commit 9c96044c00
2 changed files with 31 additions and 2 deletions

View File

@@ -1,3 +1,9 @@
2006-11-24 Michael Natterer <mitch@imendio.com>
* gtk/gtktreeview.c (gtk_tree_view_move_cursor_up_down): if we
can't go up/down, consult gtk_widget_keynav_failed() and leave the
widget if it returns FALSE (bug #322640).
2006-11-23 Behdad Esfahbod <behdad@gnome.org>
* gtk/gtkmain.c: Fix minor typo in docs. (#378632, Hannes Mueller)

View File

@@ -9513,6 +9513,7 @@ gtk_tree_view_move_cursor_up_down (GtkTreeView *tree_view,
GtkRBTree *new_cursor_tree = NULL;
GtkRBNode *new_cursor_node = NULL;
GtkTreePath *cursor_path = NULL;
gboolean grab_focus = TRUE;
if (! GTK_WIDGET_HAS_FOCUS (tree_view))
return;
@@ -9585,10 +9586,32 @@ gtk_tree_view_move_cursor_up_down (GtkTreeView *tree_view,
else
{
gtk_tree_view_clamp_node_visible (tree_view, cursor_tree, cursor_node);
gtk_widget_error_bell (GTK_WIDGET (tree_view));
if (!tree_view->priv->shift_pressed)
{
if (! gtk_widget_keynav_failed (GTK_WIDGET (tree_view),
count < 0 ?
GTK_DIR_UP : GTK_DIR_DOWN))
{
GtkWidget *toplevel = gtk_widget_get_toplevel (GTK_WIDGET (tree_view));
if (toplevel)
gtk_widget_child_focus (toplevel,
count < 0 ?
GTK_DIR_TAB_BACKWARD :
GTK_DIR_TAB_FORWARD);
grab_focus = FALSE;
}
}
else
{
gtk_widget_error_bell (GTK_WIDGET (tree_view));
}
}
gtk_widget_grab_focus (GTK_WIDGET (tree_view));
if (grab_focus)
gtk_widget_grab_focus (GTK_WIDGET (tree_view));
}
static void