diff --git a/src/controls/QskRadioBox.cpp b/src/controls/QskRadioBox.cpp index 1db2a8bf..2e142198 100644 --- a/src/controls/QskRadioBox.cpp +++ b/src/controls/QskRadioBox.cpp @@ -207,12 +207,22 @@ void QskRadioBox::mousePressEvent( QMouseEvent* event ) update(); } +void QskRadioBox::mouseUngrabEvent() +{ + if ( m_data->pressedIndex >= 0 ) + { + m_data->pressedIndex = -1; + update(); + } +} + void QskRadioBox::mouseReleaseEvent( QMouseEvent* event ) { const auto index = indexAt( qskMousePosition( event ) ); if( index == m_data->pressedIndex ) setSelectedIndex( index ); + m_data->pressedIndex = -1; update(); } @@ -247,6 +257,9 @@ int QskRadioBox::indexAt( const QPointF& pos ) const void QskRadioBox::setFocusedIndex( int index ) { + if ( m_data->focusedIndex == index ) + return; + m_data->focusedIndex = index; setPositionHint( Ripple, index ); diff --git a/src/controls/QskRadioBox.h b/src/controls/QskRadioBox.h index 2820e3a0..e5768ef3 100644 --- a/src/controls/QskRadioBox.h +++ b/src/controls/QskRadioBox.h @@ -53,6 +53,7 @@ class QSK_EXPORT QskRadioBox : public QskControl void mousePressEvent( QMouseEvent* ) override; void mouseReleaseEvent( QMouseEvent* ) override; + void mouseUngrabEvent() override; void focusInEvent( QFocusEvent* ) override; void focusOutEvent( QFocusEvent* ) override;