summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@digia.com>2014-03-17 14:09:31 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-03-17 16:27:55 +0100
commitfc3a1fba45fed48df228134c9996988bf32c7c62 (patch)
tree47d65c9b42f17a159c8ee213261a563dd9d0c501 /src
parenta4080e47194754d717718b00f63c5f7326bf269d (diff)
Windows: Allow for custom input context plugins.
Task-number: QTBUG-37556 Change-Id: I9719138e1b09026f0971f8d3eeae525fc8951c0d Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com> Reviewed-by: Jonathan Liu <net147@gmail.com>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/platforms/windows/qwindowsintegration.cpp13
-rw-r--r--src/plugins/platforms/windows/qwindowsintegration.h1
2 files changed, 12 insertions, 2 deletions
diff --git a/src/plugins/platforms/windows/qwindowsintegration.cpp b/src/plugins/platforms/windows/qwindowsintegration.cpp
index e0e8753e14..de34663286 100644
--- a/src/plugins/platforms/windows/qwindowsintegration.cpp
+++ b/src/plugins/platforms/windows/qwindowsintegration.cpp
@@ -83,6 +83,7 @@
# include "qwindowssessionmanager.h"
#endif
#include <QtGui/private/qguiapplication_p.h>
+#include <QtGui/qpa/qplatforminputcontextfactory_p.h>
#include <QtCore/private/qeventdispatcher_win_p.h>
#include <QtCore/QDebug>
@@ -158,7 +159,7 @@ struct QWindowsIntegrationPrivate
#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2)
QOpenGLStaticContextPtr m_staticOpenGLContext;
#endif
- QWindowsInputContext m_inputContext;
+ QScopedPointer<QPlatformInputContext> m_inputContext;
#ifndef QT_NO_ACCESSIBILITY
QWindowsAccessibility m_accessibility;
#endif
@@ -224,6 +225,14 @@ QWindowsIntegration::~QWindowsIntegration()
{
}
+void QWindowsIntegration::initialize()
+{
+ if (QPlatformInputContext *pluginContext = QPlatformInputContextFactory::create())
+ d->m_inputContext.reset(pluginContext);
+ else
+ d->m_inputContext.reset(new QWindowsInputContext);
+}
+
bool QWindowsIntegration::hasCapability(QPlatformIntegration::Capability cap) const
{
switch (cap) {
@@ -441,7 +450,7 @@ QPlatformDrag *QWindowsIntegration::drag() const
QPlatformInputContext * QWindowsIntegration::inputContext() const
{
- return &d->m_inputContext;
+ return d->m_inputContext.data();
}
#ifndef QT_NO_ACCESSIBILITY
diff --git a/src/plugins/platforms/windows/qwindowsintegration.h b/src/plugins/platforms/windows/qwindowsintegration.h
index 2202ebd39e..0f417c8239 100644
--- a/src/plugins/platforms/windows/qwindowsintegration.h
+++ b/src/plugins/platforms/windows/qwindowsintegration.h
@@ -76,6 +76,7 @@ public:
virtual QPlatformOpenGLContext *createPlatformOpenGLContext(QOpenGLContext *context) const;
#endif
virtual QAbstractEventDispatcher *createEventDispatcher() const;
+ void initialize() Q_DECL_OVERRIDE;
#ifndef QT_NO_CLIPBOARD
virtual QPlatformClipboard *clipboard() const;
# ifndef QT_NO_DRAGANDDROP