diff --git a/src/libtomahawk/widgets/SeekSlider.cpp b/src/libtomahawk/widgets/SeekSlider.cpp index 2e6531f05..8cf544e22 100644 --- a/src/libtomahawk/widgets/SeekSlider.cpp +++ b/src/libtomahawk/widgets/SeekSlider.cpp @@ -33,6 +33,7 @@ SeekSlider::SeekSlider( QWidget* parent ) , TomahawkUtils::DpiScaler( this ) , m_timeLine( 0 ) , m_acceptWheelEvents( true ) + , m_isScrubbing( false ) { setStyleSheet( QString( "QSlider::groove:horizontal {" @@ -72,6 +73,8 @@ SeekSlider::mousePressEvent( QMouseEvent* event ) { if ( event->button() == Qt::LeftButton ) { + m_isScrubbing = true; + QMouseEvent eventSwap( QEvent::MouseButtonRelease, event->pos(), event->globalPos(), Qt::MidButton, Qt::MidButton, event->modifiers() ); QSlider::mousePressEvent( &eventSwap ); } @@ -107,3 +110,20 @@ SeekSlider::wheelEvent( QWheelEvent* event ) } event->ignore(); } + + +void +SeekSlider::mouseMoveEvent( QMouseEvent* event ) +{ + if (!m_isScrubbing) + return; + + // disable further scrubbing when we're past the slider's right margin + if (event->pos().x() > width()) + { + m_isScrubbing = false; + return; + } + + QSlider::mouseMoveEvent(event); +} diff --git a/src/libtomahawk/widgets/SeekSlider.h b/src/libtomahawk/widgets/SeekSlider.h index a296b1d54..12ecfaac5 100644 --- a/src/libtomahawk/widgets/SeekSlider.h +++ b/src/libtomahawk/widgets/SeekSlider.h @@ -44,11 +44,13 @@ public slots: protected: void mousePressEvent( QMouseEvent* event ); + void mouseMoveEvent( QMouseEvent* event ); void wheelEvent( QWheelEvent* event ); private: QTimeLine* m_timeLine; bool m_acceptWheelEvents; + bool m_isScrubbing; }; #endif // SEEKSLIDER_H