Diffstat (limited to 'noncore/net/wellenreiter/gui/packetview.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/net/wellenreiter/gui/packetview.cpp | 16 |
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 @@ -70,25 +70,36 @@ PacketView::PacketView( QWidget * parent, const char * name, WFlags f ) } void PacketView::add( const OPacket* p, int size ) { + /* + * don't scroll away when somebody views packages + * while scanning + */ + int value = _number->value(); + bool last = (value == static_cast<int>( _packets.count() ) ); + odebug << "PacketView::add() size = " << size << oendl; if ( size == -1 ) // unlimited buffer { _packets.append( p ); } else { // limited buffer, limit = size - while ( _packets.count() >= size ) + while ( _packets.count() >= static_cast<uint>( size ) ) { _packets.removeFirst(); + --value; } + + /* check if we lost our packet */ + last = ( value < 1 ); _packets.append( p ); } _number->setMinValue( 1 ); _number->setMaxValue( _packets.count() ); - _number->setValue( _packets.count() ); + _number->setValue( last ? _packets.count() : value ); } void PacketView::showPacket( int number ) { @@ -138,8 +149,9 @@ void PacketView::_doHexPacket( const OPacket* p ) } const QString PacketView::getLog() const { + return QString::null; } void PacketView::clear() { |