mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-05 21:57:41 +02:00
handle case when user seeks past the slider's end
This commit is contained in:
@@ -33,6 +33,7 @@ SeekSlider::SeekSlider( QWidget* parent )
|
|||||||
, TomahawkUtils::DpiScaler( this )
|
, TomahawkUtils::DpiScaler( this )
|
||||||
, m_timeLine( 0 )
|
, m_timeLine( 0 )
|
||||||
, m_acceptWheelEvents( true )
|
, m_acceptWheelEvents( true )
|
||||||
|
, m_isScrubbing( false )
|
||||||
{
|
{
|
||||||
setStyleSheet( QString(
|
setStyleSheet( QString(
|
||||||
"QSlider::groove:horizontal {"
|
"QSlider::groove:horizontal {"
|
||||||
@@ -72,6 +73,8 @@ SeekSlider::mousePressEvent( QMouseEvent* event )
|
|||||||
{
|
{
|
||||||
if ( event->button() == Qt::LeftButton )
|
if ( event->button() == Qt::LeftButton )
|
||||||
{
|
{
|
||||||
|
m_isScrubbing = true;
|
||||||
|
|
||||||
QMouseEvent eventSwap( QEvent::MouseButtonRelease, event->pos(), event->globalPos(), Qt::MidButton, Qt::MidButton, event->modifiers() );
|
QMouseEvent eventSwap( QEvent::MouseButtonRelease, event->pos(), event->globalPos(), Qt::MidButton, Qt::MidButton, event->modifiers() );
|
||||||
QSlider::mousePressEvent( &eventSwap );
|
QSlider::mousePressEvent( &eventSwap );
|
||||||
}
|
}
|
||||||
@@ -107,3 +110,20 @@ SeekSlider::wheelEvent( QWheelEvent* event )
|
|||||||
}
|
}
|
||||||
event->ignore();
|
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);
|
||||||
|
}
|
||||||
|
@@ -44,11 +44,13 @@ public slots:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
void mousePressEvent( QMouseEvent* event );
|
void mousePressEvent( QMouseEvent* event );
|
||||||
|
void mouseMoveEvent( QMouseEvent* event );
|
||||||
void wheelEvent( QWheelEvent* event );
|
void wheelEvent( QWheelEvent* event );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QTimeLine* m_timeLine;
|
QTimeLine* m_timeLine;
|
||||||
bool m_acceptWheelEvents;
|
bool m_acceptWheelEvents;
|
||||||
|
bool m_isScrubbing;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // SEEKSLIDER_H
|
#endif // SEEKSLIDER_H
|
||||||
|
Reference in New Issue
Block a user