summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/platformsupport/inputmethods/ibus/qibusplatforminputcontext.cpp5
-rw-r--r--src/platformsupport/inputmethods/ibus/qibusplatforminputcontext.h2
-rw-r--r--src/plugins/platforms/xcb/qxcbintegration.cpp10
-rw-r--r--src/plugins/platforms/xcb/qxcbkeyboard.cpp1
4 files changed, 14 insertions, 4 deletions
diff --git a/src/platformsupport/inputmethods/ibus/qibusplatforminputcontext.cpp b/src/platformsupport/inputmethods/ibus/qibusplatforminputcontext.cpp
index 55c0c4b249..4bfd41cf14 100644
--- a/src/platformsupport/inputmethods/ibus/qibusplatforminputcontext.cpp
+++ b/src/platformsupport/inputmethods/ibus/qibusplatforminputcontext.cpp
@@ -89,6 +89,11 @@ QIBusPlatformInputContext::~QIBusPlatformInputContext (void)
delete d;
}
+bool QIBusPlatformInputContext::isValid() const
+{
+ return d->valid;
+}
+
void QIBusPlatformInputContext::mouseHandler (int x, QMouseEvent *event)
{
QPlatformInputContext::mouseHandler (x, event);
diff --git a/src/platformsupport/inputmethods/ibus/qibusplatforminputcontext.h b/src/platformsupport/inputmethods/ibus/qibusplatforminputcontext.h
index 6912fe4c20..74f7da8d41 100644
--- a/src/platformsupport/inputmethods/ibus/qibusplatforminputcontext.h
+++ b/src/platformsupport/inputmethods/ibus/qibusplatforminputcontext.h
@@ -53,6 +53,8 @@ public:
QIBusPlatformInputContext();
~QIBusPlatformInputContext();
+ bool isValid() const;
+
void mouseHandler(int x, QMouseEvent *event);
void reset(void);
void update(void);
diff --git a/src/plugins/platforms/xcb/qxcbintegration.cpp b/src/plugins/platforms/xcb/qxcbintegration.cpp
index 3053cba81e..e97b9f2121 100644
--- a/src/plugins/platforms/xcb/qxcbintegration.cpp
+++ b/src/plugins/platforms/xcb/qxcbintegration.cpp
@@ -99,10 +99,14 @@ QXcbIntegration::QXcbIntegration(const QStringList &parameters)
m_fontDatabase = new QGenericUnixFontDatabase();
m_nativeInterface = new QXcbNativeInterface;
-#if defined(XCB_USE_IBUS)
- m_inputContext = new QIBusPlatformInputContext;
-#else
m_inputContext = 0;
+#if defined(XCB_USE_IBUS)
+ QIBusPlatformInputContext *context = new QIBusPlatformInputContext;
+ if (context->isValid()) {
+ m_inputContext = context;
+ } else {
+ delete context;
+ }
#endif
}
diff --git a/src/plugins/platforms/xcb/qxcbkeyboard.cpp b/src/plugins/platforms/xcb/qxcbkeyboard.cpp
index adaed53106..6f37c078a1 100644
--- a/src/plugins/platforms/xcb/qxcbkeyboard.cpp
+++ b/src/plugins/platforms/xcb/qxcbkeyboard.cpp
@@ -49,7 +49,6 @@
#include <private/qguiapplication_p.h>
#include <stdio.h>
-#define XCB_USE_IBUS
#if defined(XCB_USE_IBUS)
#include "QtPlatformSupport/qibusplatforminputcontext.h"
#endif