aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2009-12-08 16:14:01 +0000
committerAnders Broman <anders.broman@ericsson.com>2009-12-08 16:14:01 +0000
commit0f8ab929a62ead701aa32dc90a79e310e49dfcff (patch)
tree56f3ca51792502885b9ec5254a963cef36599b61
parent86e83facfc339c12c662cb4b4d1061ae9f287b19 (diff)
When freezing/thawing selection gets lost.
svn path=/trunk/; revision=31206
-rw-r--r--gtk/new_packet_list.c18
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