summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com>2009-09-03 14:32:11 +0000
committerKovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com>2009-09-03 14:32:11 +0000
commitbd69669e1dbd7e6419b7a4da38a45734f40ec52d (patch)
tree2b211e3a6aadd7e618fa91f6bdfe039d618857d9
parent7b5da3039236cea67ab2d67ee4730f3eb4838085 (diff)
downloadwireshark-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.c2
-rw-r--r--gtk/new_packet_list.c23
-rw-r--r--ui_util.h1
3 files changed, 25 insertions, 1 deletions
diff --git a/file.c b/file.c
index 5a90bbea9b..ceb3390b13 100644
--- a/file.c
+++ b/file.c
@@ -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)
{
diff --git a/ui_util.h b/ui_util.h
index 07bc47facc..b2f4955cb2 100644
--- a/ui_util.h
+++ b/ui_util.h
@@ -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 */