mouse handling completed

This commit is contained in:
Uwe Rathmann 2023-03-01 14:22:40 +01:00
parent 55d6aa6d5e
commit a4b2bcde16
2 changed files with 34 additions and 1 deletions

View File

@ -60,6 +60,11 @@ class QskSpinBox::PrivateData
{
}
inline bool isActivatedByMouse() const
{
return this->repeatTimer.isActive() && ( this->key == Qt::Key_unknown );
}
inline void setAutoRepeat( QskSpinBox* spinBox, qreal offset )
{
this->autoRepeatIncrement = offset;
@ -294,6 +299,32 @@ void QskSpinBox::mousePressEvent( QMouseEvent* event )
void QskSpinBox::mouseReleaseEvent( QMouseEvent* )
{
if ( m_data->isActivatedByMouse() )
m_data->setAutoRepeat( this, 0.0 );
}
void QskSpinBox::mouseMoveEvent( QMouseEvent* event )
{
if ( m_data->isActivatedByMouse() )
{
const auto subcontrol = buttonAt( this, qskMousePosition( event ) );
if ( m_data->autoRepeatIncrement >= 0.0 )
{
if ( subcontrol != QskSpinBox::UpPanel )
m_data->setAutoRepeat( this, 0.0 );
}
else
{
if ( subcontrol != QskSpinBox::DownPanel )
m_data->setAutoRepeat( this, 0.0 );
}
}
}
void QskSpinBox::mouseUngrabEvent()
{
if ( m_data->isActivatedByMouse() )
m_data->setAutoRepeat( this, 0.0 );
}

View File

@ -95,7 +95,9 @@ class QSK_EXPORT QskSpinBox : public QskBoundedValueInput
void timerEvent( QTimerEvent* ) override;
void mouseReleaseEvent( QMouseEvent* ) override;
void mouseMoveEvent( QMouseEvent* ) override;
void mousePressEvent( QMouseEvent* ) override;
void mouseUngrabEvent() override;
void keyPressEvent( QKeyEvent* ) override;
void keyReleaseEvent( QKeyEvent* ) override;