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
This commit is contained in:
Kovarththanan Rajaratnam 2009-09-03 14:32:11 +00:00
parent 7b5da30392
commit bd69669e1d
3 changed files with 25 additions and 1 deletions

2
file.c
View File

@ -753,6 +753,7 @@ cf_continue_tail(capture_file *cf, volatile int to_read, int *err)
*err = 0; *err = 0;
#ifdef NEW_PACKET_LIST #ifdef NEW_PACKET_LIST
new_packet_list_check_end();
new_packet_list_freeze(); new_packet_list_freeze();
#else #else
packet_list_check_end(); packet_list_check_end();
@ -882,6 +883,7 @@ cf_finish_tail(capture_file *cf, int *err)
} }
#ifdef NEW_PACKET_LIST #ifdef NEW_PACKET_LIST
new_packet_list_check_end();
new_packet_list_freeze(); new_packet_list_freeze();
#else #else
packet_list_check_end(); packet_list_check_end();

View File

@ -63,7 +63,7 @@
#include "gtk/main_statusbar.h" #include "gtk/main_statusbar.h"
static PacketList *packetlist; static PacketList *packetlist;
static gboolean last_at_end = FALSE;
static gboolean enable_color; static gboolean enable_color;
static GtkWidget *create_view_and_model(void); static GtkWidget *create_view_and_model(void);
@ -414,6 +414,27 @@ new_packet_list_moveto_end(void)
gtk_tree_path_free(path); 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 gint
new_packet_list_find_row_from_data(gpointer data, gboolean select) new_packet_list_find_row_from_data(gpointer data, gboolean select)
{ {

View File

@ -74,6 +74,7 @@ void new_packet_list_queue_draw(void);
void new_packet_list_select_first_row(void); void new_packet_list_select_first_row(void);
void new_packet_list_select_last_row(void); void new_packet_list_select_last_row(void);
void new_packet_list_moveto_end(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); gint new_packet_list_find_row_from_data(gpointer data, gboolean select);
#else #else
/* packet list related functions */ /* packet list related functions */