code simplified

This commit is contained in:
Uwe Rathmann 2023-03-03 13:01:07 +01:00
parent 68d02006f4
commit f45946726f
1 changed files with 22 additions and 35 deletions

View File

@ -6,31 +6,12 @@
#include "QskRadioBoxSkinlet.h" #include "QskRadioBoxSkinlet.h"
#include "QskRadioBox.h" #include "QskRadioBox.h"
#include "QskSkinStateChanger.h"
#include "QskFunctions.h" #include "QskFunctions.h"
#include <qfontmetrics.h> #include <qfontmetrics.h>
namespace namespace
{ {
QskAspect::States statesForIndex( const QskRadioBox* radioBox, int index )
{
using Q = QskRadioBox;
auto states = radioBox->skinStates();
if( radioBox->selectedIndex() == index )
states |= Q::Selected;
if( radioBox->pressedIndex() == index )
states |= Q::Pressed;
if( radioBox->positionHint( Q::Ripple ) == index )
states |= Q::Focused;
return states;
}
qreal lineHeight( const QskRadioBox* radioBox ) qreal lineHeight( const QskRadioBox* radioBox )
{ {
using Q = QskRadioBox; using Q = QskRadioBox;
@ -126,17 +107,7 @@ QSGNode* QskRadioBoxSkinlet::updateSubNode( const QskSkinnable* skinnable,
return updateSeriesNode( skinnable, Q::Text, node ); return updateSeriesNode( skinnable, Q::Text, node );
case RippleRole: case RippleRole:
{ return updateBoxNode( skinnable, node, Q::Ripple );
auto radioBox = static_cast< const QskRadioBox* >( skinnable );
#if 1
QskSkinStateChanger changer( radioBox );
auto ripplePosition = radioBox->positionHint( Q::Ripple );
changer.setStates( statesForIndex( radioBox, ripplePosition ) );
#endif
return updateBoxNode( radioBox, node, Q::Ripple );
}
}; };
return Inherited::updateSubNode( skinnable, nodeRole, node ); return Inherited::updateSubNode( skinnable, nodeRole, node );
@ -232,13 +203,29 @@ QRectF QskRadioBoxSkinlet::sampleRect( const QskSkinnable* skinnable,
return QRectF(); return QRectF();
} }
QskAspect::States QskRadioBoxSkinlet::sampleStates( const QskSkinnable* skinnable, QskAspect::States QskRadioBoxSkinlet::sampleStates(
QskAspect::Subcontrol subControl, int index ) const const QskSkinnable* skinnable, QskAspect::Subcontrol, int index ) const
{ {
auto radioBox = static_cast< const QskRadioBox* >( skinnable ); using Q = QskRadioBox;
auto states = Inherited::sampleStates( skinnable, subControl, index );
return states | statesForIndex( radioBox, index ); auto radioBox = static_cast< const QskRadioBox* >( skinnable );
auto states = radioBox->skinStates();
if( radioBox->selectedIndex() == index )
states |= Q::Selected;
if( radioBox->pressedIndex() == index )
states |= Q::Pressed;
#if 1
if( radioBox->positionHint( Q::Ripple ) == index )
states |= Q::Focused;
else
states &= ~Q::Focused;
#endif
return states;
} }
QSGNode* QskRadioBoxSkinlet::updateSampleNode( const QskSkinnable* skinnable, QSGNode* QskRadioBoxSkinlet::updateSampleNode( const QskSkinnable* skinnable,