r32323 broke packet detail tree expansion using the left/right keys on

X11. Add back the removed code and add checks for expandable items.

svn path=/trunk/; revision=32957
This commit is contained in:
Gerald Combs 2010-05-25 23:55:33 +00:00
parent a34ed6fcff
commit 237eef2ae7
1 changed files with 18 additions and 4 deletions

View File

@ -1185,7 +1185,7 @@ tree_view_key_pressed_cb(GtkWidget *tree, GdkEventKey *event, gpointer user_data
GtkTreeIter parent;
GtkTreeModel* model;
GtkTreePath* path;
gboolean expanded;
gboolean expanded, expandable;
int rc = FALSE;
selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree));
@ -1201,14 +1201,18 @@ tree_view_key_pressed_cb(GtkWidget *tree, GdkEventKey *event, gpointer user_data
if(!path) {
return FALSE;
}
/* Always FALSE when we're in the packet list (at least until we add sub-packets) */
expanded = gtk_tree_view_row_expanded(GTK_TREE_VIEW(tree), path);
expandable = gtk_tree_model_iter_has_child(model, &iter);
switch (event->keyval) {
case GDK_Left:
if(expanded) {
/* subtree is expanded, collapse it by letting default callback handle it. */
rc = FALSE;
break;
/* Subtree is expanded. Collapse it. */
gtk_tree_view_collapse_row(GTK_TREE_VIEW(tree), path);
rc = TRUE;
break;
}
/* No break - fall through to jumping to the parent */
case GDK_BackSpace:
@ -1230,6 +1234,16 @@ tree_view_key_pressed_cb(GtkWidget *tree, GdkEventKey *event, gpointer user_data
break;
}
break;
case GDK_Right:
if (expandable) {
/* We have a subtree. Try to expand it. */
gtk_tree_view_expand_row(GTK_TREE_VIEW(tree), path, FALSE /* !open_all */);
rc = TRUE;
break;
} else {
rc = FALSE;
break;
}
case GDK_Return:
case GDK_KP_Enter:
/* Reverse the current state. */