summaryrefslogtreecommitdiff
path: root/noncore/net/wellenreiter/gui/packetview.cpp
Unidiff
Diffstat (limited to 'noncore/net/wellenreiter/gui/packetview.cpp') (more/less context) (show whitespace changes)
-rw-r--r--noncore/net/wellenreiter/gui/packetview.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/noncore/net/wellenreiter/gui/packetview.cpp b/noncore/net/wellenreiter/gui/packetview.cpp
index 69438fa..d71111f 100644
--- a/noncore/net/wellenreiter/gui/packetview.cpp
+++ b/noncore/net/wellenreiter/gui/packetview.cpp
@@ -68,29 +68,40 @@ PacketView::PacketView( QWidget * parent, const char * name, WFlags f )
68 clear(); 68 clear();
69 69
70} 70}
71 71
72void PacketView::add( const OPacket* p, int size ) 72void PacketView::add( const OPacket* p, int size )
73{ 73{
74 /*
75 * don't scroll away when somebody views packages
76 * while scanning
77 */
78 int value = _number->value();
79 bool last = (value == static_cast<int>( _packets.count() ) );
80
74 odebug << "PacketView::add() size = " << size << oendl; 81 odebug << "PacketView::add() size = " << size << oendl;
75 if ( size == -1 ) // unlimited buffer 82 if ( size == -1 ) // unlimited buffer
76 { 83 {
77 _packets.append( p ); 84 _packets.append( p );
78 } 85 }
79 else 86 else
80 { // limited buffer, limit = size 87 { // limited buffer, limit = size
81 while ( _packets.count() >= size ) 88 while ( _packets.count() >= static_cast<uint>( size ) )
82 { 89 {
83 _packets.removeFirst(); 90 _packets.removeFirst();
91 --value;
84 } 92 }
93
94 /* check if we lost our packet */
95 last = ( value < 1 );
85 _packets.append( p ); 96 _packets.append( p );
86 } 97 }
87 98
88 _number->setMinValue( 1 ); 99 _number->setMinValue( 1 );
89 _number->setMaxValue( _packets.count() ); 100 _number->setMaxValue( _packets.count() );
90 _number->setValue( _packets.count() ); 101 _number->setValue( last ? _packets.count() : value );
91} 102}
92 103
93void PacketView::showPacket( int number ) 104void PacketView::showPacket( int number )
94{ 105{
95 _list->clear(); 106 _list->clear();
96 _hex->setText(""); 107 _hex->setText("");
@@ -136,12 +147,13 @@ void PacketView::_doHexPacket( const OPacket* p )
136 else 147 else
137 _hex->setText( p->dump( 8 ) ); 148 _hex->setText( p->dump( 8 ) );
138} 149}
139 150
140const QString PacketView::getLog() const 151const QString PacketView::getLog() const
141{ 152{
153 return QString::null;
142} 154}
143 155
144void PacketView::clear() 156void PacketView::clear()
145{ 157{
146 _packets.clear(); 158 _packets.clear();
147 _number->setMinValue( 0 ); 159 _number->setMinValue( 0 );