using QskSkinStateChanger

This commit is contained in:
Uwe Rathmann 2021-12-23 18:15:54 +01:00
parent 6fd771d741
commit d37b9ca39c
2 changed files with 3 additions and 28 deletions

View File

@ -9,37 +9,13 @@
#include "QskColorFilter.h"
#include "QskGraphic.h"
#include "QskSGNode.h"
#include "QskSkinStateChanger.h"
#include <qmath.h>
#include <qsgnode.h>
#include <qsgsimplerectnode.h>
#include <qtransform.h>
namespace
{
class StateChanger
{
public:
StateChanger( const QskSkinnable* skinnable, QskAspect::States states )
: m_skinnable( const_cast< QskSkinnable* >( skinnable ) )
, m_oldStates( skinnable->skinStates() )
{
if ( states )
m_skinnable->replaceSkinStates( m_oldStates | states );
}
~StateChanger()
{
if ( m_oldStates != m_skinnable->skinStates() )
m_skinnable->replaceSkinStates( m_oldStates );
}
private:
QskSkinnable* m_skinnable;
QskAspect::States m_oldStates;
};
}
class QskListViewNode final : public QSGTransformNode
{
public:
@ -185,7 +161,7 @@ void QskListViewSkinlet::updateBackgroundNodes(
if ( rowSelected >= rowMin && rowSelected <= rowMax )
{
const StateChanger stateChanger( listView, QskListView::Selected );
const QskSkinStateChanger stateChanger( listView, QskListView::Selected );
const QColor color = listView->color( QskListView::Cell );
if ( rowNode == nullptr )
@ -462,7 +438,7 @@ QSGNode* QskListViewSkinlet::updateCellNode( const QskListView* listView,
if ( row == listView->selectedRow() )
rowStates |= QskListView::Selected;
StateChanger stateChanger( listView, rowStates );
QskSkinStateChanger stateChanger( listView, rowStates );
QSGNode* newNode = nullptr;

View File

@ -10,7 +10,6 @@
class QskListView;
class QskListViewNode;
class QskTextNode;
class QMarginsF;
class QSizeF;