summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/xcb/qxcbintegration.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/platforms/xcb/qxcbintegration.cpp')
-rw-r--r--src/plugins/platforms/xcb/qxcbintegration.cpp16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/plugins/platforms/xcb/qxcbintegration.cpp b/src/plugins/platforms/xcb/qxcbintegration.cpp
index 3d181dcf0c..316d28ea3f 100644
--- a/src/plugins/platforms/xcb/qxcbintegration.cpp
+++ b/src/plugins/platforms/xcb/qxcbintegration.cpp
@@ -63,7 +63,8 @@
#endif
#if defined(XCB_USE_IBUS)
-#include "QtPlatformSupport/qibusplatforminputcontext.h"
+#include <private/qplatforminputcontextfactory_qpa_p.h>
+#include <qplatforminputcontext_qpa.h>
#endif
#if defined(XCB_USE_GLX)
@@ -102,12 +103,15 @@ QXcbIntegration::QXcbIntegration(const QStringList &parameters)
m_inputContext = 0;
#if defined(XCB_USE_IBUS)
- QIBusPlatformInputContext *context = new QIBusPlatformInputContext;
- if (context->isValid()) {
- m_inputContext = context;
- } else {
- delete context;
+ QPlatformInputContext *platformInputContext = QPlatformInputContextFactory::create("ibus");
+ if (platformInputContext) {
+ QVariant value;
+ QMetaObject::invokeMethod(platformInputContext, "isValid", Qt::DirectConnection, Q_RETURN_ARG(QVariant, value));
+ if (value.toBool())
+ m_inputContext = platformInputContext;
}
+ if (platformInputContext && !m_inputContext)
+ delete platformInputContext;
#endif
}