From 06f6b71ba43e8302d61d2c3cb7118d9dbf7a3c98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20R=C3=B8dal?= Date: Wed, 10 Aug 2011 14:14:22 +0200 Subject: Don't set platform input context if it's not properly created. Prevent xcb applications from failing to launch when IBus is not initialized correctly. Change-Id: I8425403e02d0eb5401f8d8bb0d012b53ab9400d9 Reviewed-on: http://codereview.qt.nokia.com/3044 Reviewed-by: Qt Sanity Bot Reviewed-by: Matthew Cattell --- .../inputmethods/ibus/qibusplatforminputcontext.cpp | 5 +++++ .../inputmethods/ibus/qibusplatforminputcontext.h | 2 ++ src/plugins/platforms/xcb/qxcbintegration.cpp | 10 +++++++--- src/plugins/platforms/xcb/qxcbkeyboard.cpp | 1 - 4 files changed, 14 insertions(+), 4 deletions(-) (limited to 'src') 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 ¶meters) 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 #include -#define XCB_USE_IBUS #if defined(XCB_USE_IBUS) #include "QtPlatformSupport/qibusplatforminputcontext.h" #endif -- cgit v1.2.3