diff --git a/examples/gallery/main.cpp b/examples/gallery/main.cpp index be93afa7..95367894 100644 --- a/examples/gallery/main.cpp +++ b/examples/gallery/main.cpp @@ -159,28 +159,11 @@ namespace void changeSkin( int index ) { const auto names = qskSkinManager->skinNames(); - if ( index < 0 || index >= names.size() ) - return; - if ( index == names.indexOf( qskSetup->skinName() ) ) - return; - - auto oldSkin = qskSetup->skin(); - if ( oldSkin->parent() == qskSetup ) - oldSkin->setParent( nullptr ); // otherwise setSkin deletes it - - if ( auto newSkin = qskSetup->setSkin( names[ index ] ) ) + if ( ( index >= 0 ) && ( index < names.size() ) + && ( index != names.indexOf( qskSetup->skinName() ) ) ) { - QskSkinTransition transition; - - transition.setSourceSkin( oldSkin ); - transition.setTargetSkin( newSkin ); - transition.setAnimation( 500 ); - - transition.process(); - - if ( oldSkin->parent() == nullptr ) - delete oldSkin; + Skinny::setSkin( index, 500 ); } } }; diff --git a/support/SkinnyNamespace.cpp b/support/SkinnyNamespace.cpp index 0d103125..d86bc42b 100644 --- a/support/SkinnyNamespace.cpp +++ b/support/SkinnyNamespace.cpp @@ -135,13 +135,25 @@ static bool pluginPath = initPluginPath(); Q_COREAPP_STARTUP_FUNCTION( initFonts ) void Skinny::changeSkin( QskAnimationHint hint ) +{ + const auto names = qskSkinManager->skinNames(); + if ( names.size() > 1 ) + { + auto index = names.indexOf( qskSetup->skinName() ); + index = ( index + 1 ) % names.size(); + + setSkin( index, hint ); + } +} + +void Skinny::setSkin( int index, QskAnimationHint hint ) { const auto names = qskSkinManager->skinNames(); if ( names.size() <= 1 ) return; - int index = names.indexOf( qskSetup->skinName() ); - index = ( index + 1 ) % names.size(); + if ( index == names.indexOf( qskSetup->skinName() ) ) + return; auto oldSkin = qskSetup->skin(); if ( oldSkin->parent() == qskSetup ) diff --git a/support/SkinnyNamespace.h b/support/SkinnyNamespace.h index a2b30c94..5451a5e0 100644 --- a/support/SkinnyNamespace.h +++ b/support/SkinnyNamespace.h @@ -11,6 +11,7 @@ namespace Skinny { SKINNY_EXPORT void changeSkin( QskAnimationHint hint = 500 ); + SKINNY_EXPORT void setSkin( int index, QskAnimationHint hint = 500 ); SKINNY_EXPORT void changeFonts( int increment ); SKINNY_EXPORT void init(); }