aboutsummaryrefslogtreecommitdiffstats
path: root/gtk/gui_utils.c
diff options
context:
space:
mode:
authorGerald Combs <gerald@wireshark.org>2010-05-25 23:55:33 +0000
committerGerald Combs <gerald@wireshark.org>2010-05-25 23:55:33 +0000
commit237eef2ae7c9c4bb8b75fac76d79d3c3ad76fc51 (patch)
treedbbdd4b71bebbb1b3c5f09f834bcb7c3d9de5ff9 /gtk/gui_utils.c
parenta34ed6fcffef2c2ba625373b4729f0e2f292cd33 (diff)
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
Diffstat (limited to 'gtk/gui_utils.c')
-rw-r--r--gtk/gui_utils.c22
1 files changed, 18 insertions, 4 deletions
diff --git a/gtk/gui_utils.c b/gtk/gui_utils.c
index b36e48aa38..44f1c40736 100644
--- a/gtk/gui_utils.c
+++ b/gtk/gui_utils.c
@@ -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. */