1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-01 11:50:37 +02:00

handle case when user seeks past the slider's end

This commit is contained in:
Tomasz Woźniak
2015-10-05 00:47:26 +02:00
parent 282b876332
commit 193beda2bc
2 changed files with 22 additions and 0 deletions

View File

@@ -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);
}

View File

@@ -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