diff options
author | Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> | 2009-09-03 14:32:11 +0000 |
---|---|---|
committer | Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> | 2009-09-03 14:32:11 +0000 |
commit | bd69669e1dbd7e6419b7a4da38a45734f40ec52d (patch) | |
tree | 2b211e3a6aadd7e618fa91f6bdfe039d618857d9 | |
parent | 7b5da3039236cea67ab2d67ee4730f3eb4838085 (diff) | |
download | wireshark-bd69669e1dbd7e6419b7a4da38a45734f40ec52d.tar.gz |
Make sure that we stop auto scroll if we start scrolling manually.
Caveat: we jump to first frame when auto scroll is stopped
svn path=/trunk/; revision=29685
-rw-r--r-- | file.c | 2 | ||||
-rw-r--r-- | gtk/new_packet_list.c | 23 | ||||
-rw-r--r-- | ui_util.h | 1 |
3 files changed, 25 insertions, 1 deletions
@@ -753,6 +753,7 @@ cf_continue_tail(capture_file *cf, volatile int to_read, int *err) *err = 0; #ifdef NEW_PACKET_LIST + new_packet_list_check_end(); new_packet_list_freeze(); #else packet_list_check_end(); @@ -882,6 +883,7 @@ cf_finish_tail(capture_file *cf, int *err) } #ifdef NEW_PACKET_LIST + new_packet_list_check_end(); new_packet_list_freeze(); #else packet_list_check_end(); diff --git a/gtk/new_packet_list.c b/gtk/new_packet_list.c index 43eb8c3e5e..15a1f7ca66 100644 --- a/gtk/new_packet_list.c +++ b/gtk/new_packet_list.c @@ -63,7 +63,7 @@ #include "gtk/main_statusbar.h" static PacketList *packetlist; - +static gboolean last_at_end = FALSE; static gboolean enable_color; static GtkWidget *create_view_and_model(void); @@ -414,6 +414,27 @@ new_packet_list_moveto_end(void) gtk_tree_path_free(path); } +gboolean +new_packet_list_check_end(void) +{ + gboolean at_end = FALSE; + GtkAdjustment *adj; + + adj = gtk_tree_view_get_vadjustment(GTK_TREE_VIEW(packetlist->view)); + g_return_val_if_fail(adj != NULL, FALSE); + + if (adj->value >= adj->upper - adj->page_size) { + at_end = TRUE; + } +#ifdef HAVE_LIBPCAP + if (adj->value > 0 && at_end != last_at_end && at_end != auto_scroll_live) { + menu_auto_scroll_live_changed(at_end); + } +#endif + last_at_end = at_end; + return at_end; +} + gint new_packet_list_find_row_from_data(gpointer data, gboolean select) { @@ -74,6 +74,7 @@ void new_packet_list_queue_draw(void); void new_packet_list_select_first_row(void); void new_packet_list_select_last_row(void); void new_packet_list_moveto_end(void); +gboolean new_packet_list_check_end(void); gint new_packet_list_find_row_from_data(gpointer data, gboolean select); #else /* packet list related functions */ |