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 ) inline void setAutoRepeat( QskSpinBox* spinBox, qreal offset )
{ {
this->autoRepeatIncrement = offset; this->autoRepeatIncrement = offset;
@ -294,7 +299,33 @@ void QskSpinBox::mousePressEvent( QMouseEvent* event )
void QskSpinBox::mouseReleaseEvent( QMouseEvent* ) void QskSpinBox::mouseReleaseEvent( QMouseEvent* )
{ {
m_data->setAutoRepeat( this, 0.0 ); 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 );
} }
void QskSpinBox::keyPressEvent( QKeyEvent* event ) void QskSpinBox::keyPressEvent( QKeyEvent* event )

View File

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