From 6fd771d741f6b935ca80583e2cd9781bd1b37b3f Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Thu, 23 Dec 2021 18:15:07 +0100 Subject: [PATCH] QskSkinStateChanger introduced --- src/controls/QskSkinStateChanger.h | 38 ++++++++++++++++++++++++++++++ src/src.pro | 1 + 2 files changed, 39 insertions(+) create mode 100644 src/controls/QskSkinStateChanger.h diff --git a/src/controls/QskSkinStateChanger.h b/src/controls/QskSkinStateChanger.h new file mode 100644 index 00000000..97a0eff9 --- /dev/null +++ b/src/controls/QskSkinStateChanger.h @@ -0,0 +1,38 @@ +/****************************************************************************** + * QSkinny - Copyright (C) 2016 Uwe Rathmann + * This file may be used under the terms of the QSkinny License, Version 1.0 + *****************************************************************************/ + +#ifndef QSK_SKIN_STATE_CHANGER_H +#define QSK_SKIN_STATE_CHANGER_H + +#include "QskAspect.h" +#include "QskSkinnable.h" + +class QskSkinStateChanger +{ + public: + QskSkinStateChanger( const QskSkinnable*, QskAspect::States ); + ~QskSkinStateChanger(); + + private: + QskSkinnable* m_skinnable; + QskAspect::States m_oldStates; +}; + +inline QskSkinStateChanger::QskSkinStateChanger( + const QskSkinnable* skinnable, QskAspect::States states ) + : m_skinnable( const_cast< QskSkinnable* >( skinnable ) ) + , m_oldStates( skinnable->skinStates() ) +{ + if ( states ) + m_skinnable->replaceSkinStates( m_oldStates | states ); +} + +inline QskSkinStateChanger::~QskSkinStateChanger() +{ + if ( m_oldStates != m_skinnable->skinStates() ) + m_skinnable->replaceSkinStates( m_oldStates ); +} + +#endif diff --git a/src/src.pro b/src/src.pro index 0f1af5ef..e59faa07 100644 --- a/src/src.pro +++ b/src/src.pro @@ -179,6 +179,7 @@ HEADERS += \ controls/QskSkinHintTable.h \ controls/QskSkinHintTableEditor.h \ controls/QskSkinManager.h \ + controls/QskSkinStateChanger.h \ controls/QskSkinTransition.h \ controls/QskSkinlet.h \ controls/QskSkinnable.h \