diff options
author | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2012-10-17 15:18:28 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-10-18 15:13:11 +0200 |
commit | 23c19acc59e791a92bb2a493236ec210cf33e56d (patch) | |
tree | 496a3b88feba5346fb4106f0ba1e04f886ec786e /src/plugins/platforms/windows/qwindowsintegration.cpp | |
parent | 5c57d1eacb04b4fa6a5dd8b1299926e6c02ac602 (diff) |
Windows QPA plugin: Parse arguments from list passed to factory.
Using dynamic properties on the native interface is deprecated.
Change-Id: Ia3411780dad15af61d4805c0d9fabf00dba92301
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'src/plugins/platforms/windows/qwindowsintegration.cpp')
-rw-r--r-- | src/plugins/platforms/windows/qwindowsintegration.cpp | 59 |
1 files changed, 32 insertions, 27 deletions
diff --git a/src/plugins/platforms/windows/qwindowsintegration.cpp b/src/plugins/platforms/windows/qwindowsintegration.cpp index 12e7d7b5db..50ffb85b01 100644 --- a/src/plugins/platforms/windows/qwindowsintegration.cpp +++ b/src/plugins/platforms/windows/qwindowsintegration.cpp @@ -232,9 +232,10 @@ struct QWindowsIntegrationPrivate typedef QSharedPointer<QOpenGLStaticContext> QOpenGLStaticContextPtr; #endif - QWindowsIntegrationPrivate(); + explicit QWindowsIntegrationPrivate(const QStringList ¶mList); ~QWindowsIntegrationPrivate(); + const unsigned m_options; QWindowsContext m_context; QPlatformFontDatabase *m_fontDatabase; QWindowsNativeInterface m_nativeInterface; @@ -255,8 +256,27 @@ struct QWindowsIntegrationPrivate QWindowsServices m_services; }; -QWindowsIntegrationPrivate::QWindowsIntegrationPrivate() - : m_fontDatabase(0), m_eventDispatcher(new QWindowsGuiEventDispatcher) +static inline unsigned parseOptions(const QStringList ¶mList) +{ + unsigned options = 0; + foreach (const QString ¶m, paramList) { + if (param.startsWith(QLatin1String("fontengine="))) { + if (param.endsWith(QLatin1String("freetype"))) { + options |= QWindowsIntegration::FontDatabaseFreeType; + } else if (param.endsWith(QLatin1String("native"))) { + options |= QWindowsIntegration::FontDatabaseNative; + } + } else if (param == QLatin1String("gl=gdi")) { + options |= QWindowsIntegration::DisableArb; + } + } + return options; +} + +QWindowsIntegrationPrivate::QWindowsIntegrationPrivate(const QStringList ¶mList) + : m_options(parseOptions(paramList)) + , m_fontDatabase(0) + , m_eventDispatcher(new QWindowsGuiEventDispatcher) { } @@ -266,8 +286,8 @@ QWindowsIntegrationPrivate::~QWindowsIntegrationPrivate() delete m_fontDatabase; } -QWindowsIntegration::QWindowsIntegration() : - d(new QWindowsIntegrationPrivate) +QWindowsIntegration::QWindowsIntegration(const QStringList ¶mList) : + d(new QWindowsIntegrationPrivate(paramList)) { QGuiApplicationPrivate::instance()->setEventDispatcher(d->m_eventDispatcher); #ifndef QT_NO_CLIPBOARD @@ -371,25 +391,6 @@ QPlatformOpenGLContext /* Workaround for QTBUG-24205: In 'Auto', pick the FreeType engine for * QML2 applications. */ -enum FontDatabaseOption { - FontDatabaseFreeType, - FontDatabaseNative, - FontDatabaseAuto -}; - -static inline FontDatabaseOption fontDatabaseOption(const QObject &nativeInterface) -{ - const QVariant argumentV = nativeInterface.property("fontengine"); - if (argumentV.isValid()) { - const QString argument = argumentV.toString(); - if (argument == QLatin1String("freetype")) - return FontDatabaseFreeType; - if (argument == QLatin1String("native")) - return FontDatabaseNative; - } - return FontDatabaseAuto; -} - #ifdef Q_OS_WINCE // It's not easy to detect if we are running a QML application // Let's try to do so by checking if the QtQuick module is loaded. @@ -411,10 +412,9 @@ QPlatformFontDatabase *QWindowsIntegration::fontDatabase() const #ifdef QT_NO_FREETYPE d->m_fontDatabase = new QWindowsFontDatabase(); #else // QT_NO_FREETYPE - FontDatabaseOption option = fontDatabaseOption(d->m_nativeInterface); - if (option == FontDatabaseFreeType) { + if (d->m_options & QWindowsIntegration::FontDatabaseFreeType) { d->m_fontDatabase = new QWindowsFontDatabaseFT; - } else if (option == FontDatabaseNative){ + } else if (d->m_options & QWindowsIntegration::FontDatabaseNative){ d->m_fontDatabase = new QWindowsFontDatabase; } else { #ifndef Q_OS_WINCE @@ -520,6 +520,11 @@ QWindowsIntegration *QWindowsIntegration::instance() return static_cast<QWindowsIntegration *>(QGuiApplicationPrivate::platformIntegration()); } +unsigned QWindowsIntegration::options() const +{ + return d->m_options; +} + QAbstractEventDispatcher * QWindowsIntegration::guiThreadEventDispatcher() const { return d->m_eventDispatcher; |