diff options
author | Anders Broman <anders.broman@ericsson.com> | 2009-12-08 16:14:01 +0000 |
---|---|---|
committer | Anders Broman <anders.broman@ericsson.com> | 2009-12-08 16:14:01 +0000 |
commit | 0f8ab929a62ead701aa32dc90a79e310e49dfcff (patch) | |
tree | 56f3ca51792502885b9ec5254a963cef36599b61 | |
parent | 86e83facfc339c12c662cb4b4d1061ae9f287b19 (diff) |
When freezing/thawing selection gets lost.
svn path=/trunk/; revision=31206
-rw-r--r-- | gtk/new_packet_list.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/gtk/new_packet_list.c b/gtk/new_packet_list.c index cbbaaebeeb..7c5d0160ab 100644 --- a/gtk/new_packet_list.c +++ b/gtk/new_packet_list.c @@ -577,12 +577,27 @@ new_packet_list_freeze(void) void new_packet_list_thaw(void) { + GtkTreePath *path; + GtkTreeSelection *selection; + GtkTreeIter iter; + /* Apply model */ gtk_tree_view_set_model( GTK_TREE_VIEW(packetlist->view), GTK_TREE_MODEL(packetlist)); /* Remove extra reference added by new_packet_list_freeze() */ g_object_unref(packetlist); + /* Selection may have been lost, reselect the current row */ + if (cfile.current_row!=0){ + path = gtk_tree_path_new_from_indices(cfile.current_row-1, -1); + + if (gtk_tree_model_get_iter(gtk_tree_view_get_model(GTK_TREE_VIEW(packetlist->view)), &iter, path)){ + /* Select the row */ + selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(packetlist->view)); + gtk_tree_selection_select_iter (selection, &iter); + } + } + packets_bar_update(); } @@ -720,6 +735,7 @@ new_packet_list_select_first_row(void) return; scroll_to_and_select_iter(model, NULL, &iter); + gtk_widget_grab_focus(packetlist->view); } void @@ -766,7 +782,7 @@ new_packet_list_moveto_end(void) 0); /* The horizontal alignment of the column */ gtk_tree_path_free(path); - gtk_widget_grab_focus(packetlist->view); + } gboolean |