summaryrefslogtreecommitdiffstats
path: root/src/gui/kernel/qplatformintegration_qpa.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@nokia.com>2012-03-14 13:50:14 +0100
committerQt by Nokia <qt-info@nokia.com>2012-03-15 00:50:47 +0100
commitf7957f39937c42aadecc6ad2b73d006559514e00 (patch)
tree05dd38f103090dcc7eb5d5fc9f8f6446ebef1e6f /src/gui/kernel/qplatformintegration_qpa.cpp
parentd295b9b9cfc8bde021bf07ea997d8cd0d14cffb8 (diff)
Refactor theme plugin loading.
In the old implementation, the QPlatformIntegration was asked for the theme first, so there was no way of overriding that by a custom plugin. Also, there was a memory leak in case the platform theme was actually created by a plugin. QGuiApplication now asks the QPlatformIntegration for a list of potential theme names first, tries to load them using the plugin loader and finally invokes a factory method of QPlatformIntegration in case that fails. The theme is now owned by QGuiApplication. In the XCB plugin, the environment variable DESKTOP_SESSION is queried and appended to the list of themes, making it possible to load plugins for other session types. Change-Id: I1a4b4e061815bca16c65b23e591bb7563a3e44e2 Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
Diffstat (limited to 'src/gui/kernel/qplatformintegration_qpa.cpp')
-rw-r--r--src/gui/kernel/qplatformintegration_qpa.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/gui/kernel/qplatformintegration_qpa.cpp b/src/gui/kernel/qplatformintegration_qpa.cpp
index e8721edce7..c9ccc27ad0 100644
--- a/src/gui/kernel/qplatformintegration_qpa.cpp
+++ b/src/gui/kernel/qplatformintegration_qpa.cpp
@@ -44,6 +44,7 @@
#include <QtGui/QPlatformFontDatabase>
#include <QtGui/QPlatformClipboard>
#include <QtGui/QPlatformAccessibility>
+#include <QtGui/QPlatformTheme>
#include <QtGui/private/qguiapplication_p.h>
#include <QtGui/private/qpixmap_raster_p.h>
#include <QtGui/private/qplatformscreen_qpa_p.h>
@@ -315,9 +316,15 @@ void QPlatformIntegration::screenAdded(QPlatformScreen *ps)
emit qGuiApp->screenAdded(screen);
}
-class QPlatformTheme *QPlatformIntegration::platformTheme() const
+QStringList QPlatformIntegration::themeNames() const
{
- return 0;
+ return QStringList();
+}
+
+class QPlatformTheme *QPlatformIntegration::createPlatformTheme(const QString &name) const
+{
+ Q_UNUSED(name)
+ return new QPlatformTheme;
}
QT_END_NAMESPACE