diff --git a/src/controls/QskSkinTransition.cpp b/src/controls/QskSkinTransition.cpp index a717d0eb..5e20ca9f 100644 --- a/src/controls/QskSkinTransition.cpp +++ b/src/controls/QskSkinTransition.cpp @@ -1,6 +1,7 @@ #include "QskSkinTransition.h" #include "QskColorFilter.h" #include "QskControl.h" +#include "QskWindow.h" #include "QskHintAnimator.h" #include "QskSkin.h" #include "QskSkinHintTable.h" @@ -8,7 +9,6 @@ #include #include #include -#include #include #include @@ -616,10 +616,13 @@ void QskSkinTransition::process() { if ( auto quickWindow = qobject_cast< QQuickWindow* >( window ) ) { - if ( !quickWindow->isVisible() ) + if ( !quickWindow->isVisible() || + ( qskEffectiveSkin( quickWindow ) != m_skins[ 1 ] ) ) + { continue; + } - auto* group = new AnimatorGroup( quickWindow ); + auto group = new AnimatorGroup( quickWindow ); if ( doGraphicFilter ) { diff --git a/src/controls/QskWindow.cpp b/src/controls/QskWindow.cpp index 824b842c..c05a39b3 100644 --- a/src/controls/QskWindow.cpp +++ b/src/controls/QskWindow.cpp @@ -678,4 +678,15 @@ QskSkin* QskWindow::skin() const return d_func()->skin; } +QskSkin* qskEffectiveSkin( const QQuickWindow* window ) +{ + if ( auto w = qobject_cast< const QskWindow* >( window ) ) + { + if ( auto skin = w->skin() ) + return skin; + } + + return qskSetup->skin(); +} + #include "moc_QskWindow.cpp" diff --git a/src/controls/QskWindow.h b/src/controls/QskWindow.h index b5ede33d..8a2a158f 100644 --- a/src/controls/QskWindow.h +++ b/src/controls/QskWindow.h @@ -100,4 +100,6 @@ class QSK_EXPORT QskWindow : public QQuickWindow Q_DECLARE_PRIVATE( QskWindow ) }; +QSK_EXPORT QskSkin* qskEffectiveSkin( const QQuickWindow* ); + #endif