From e5a0571cb086a162d4f0838f5be3647dc58b7230 Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Wed, 26 Jul 2017 17:50:41 +0200 Subject: [PATCH] creating of default skins by accident fixed ( needs only to be done, when the application has no other skins already defined ) --- src/controls/QskSkinFactory.cpp | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/controls/QskSkinFactory.cpp b/src/controls/QskSkinFactory.cpp index f0a8f3d9..e8ec26d2 100644 --- a/src/controls/QskSkinFactory.cpp +++ b/src/controls/QskSkinFactory.cpp @@ -5,6 +5,7 @@ #include #include +#include namespace { @@ -41,18 +42,21 @@ namespace return skin; } }; + + typedef QHash< QString, QPointer< QskSkinFactory > > FactoryTable; } -static QHash< QString, QPointer< QskSkinFactory > >& qskFactoryTable() +Q_GLOBAL_STATIC( FactoryTable, qskFactoryTable ) + +static FactoryTable& qskGetFactoryTable() { - static QHash< QString, QPointer< QskSkinFactory > > table; - if ( table.isEmpty() ) + if ( qskFactoryTable->isEmpty() ) { static SkinFactory dummySkinFactory ( nullptr ); - table.insert( factoryId.toLower(), &dummySkinFactory ); + qskFactoryTable->insert( factoryId.toLower(), &dummySkinFactory ); } - return table; + return *qskFactoryTable; } QskSkinFactory::QskSkinFactory( QObject* parent ): @@ -65,19 +69,19 @@ QskSkinFactory::~QskSkinFactory() = default; void Qsk::registerSkinFactory( const QString& id, QskSkinFactory* factory ) { - qskFactoryTable().insert( id.toLower(), factory ); + qskFactoryTable->insert( id.toLower(), factory ); } QskSkinFactory* Qsk::skinFactory( const QString& id ) { - return qskFactoryTable().value( id.toLower() ).data(); + return qskGetFactoryTable().value( id.toLower() ).data(); } QStringList Qsk::skinNames() { QStringList names; - for ( auto factory : qskFactoryTable() ) + for ( auto factory : qskGetFactoryTable() ) { if ( factory ) names += factory->skinNames(); @@ -90,7 +94,7 @@ QskSkin* Qsk::createSkin( const QString& skinName ) { if ( !skinName.isEmpty() ) { - for ( auto factory : qskFactoryTable() ) + for ( auto factory : qskGetFactoryTable() ) { QskSkin* skin = factory->createSkin( skinName ); if ( skin )