diff options
author | Jarkko Koivikko <jarkko.koivikko@code-q.fi> | 2018-08-29 09:42:16 +0300 |
---|---|---|
committer | Jarkko Koivikko <jarkko.koivikko@code-q.fi> | 2018-08-29 08:58:07 +0000 |
commit | 30479f9771e60938dc0f6e325e3b16fb52663796 (patch) | |
tree | 78512243541253ad9283da57030d2bd9503b2bf8 | |
parent | 4a92afe75bfb7886ecb1b3282b05b2985c39fe3c (diff) |
Fix possible crash in PlatformInputContext::update
Under some condition, QPlatformInputContext::update is called before
our (QML) input context is created. This will result in crash if
desktop integration is also enabled, since null pointer check is
missing.
[ChangeLog] Fixed possible crash in PlatformInputContext::update.
Task-number: QTBUG-67595
Change-Id: I19c78dbf19cf3c2a72193c2e2a60f46995c1f6ad
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
-rw-r--r-- | src/virtualkeyboard/platforminputcontext.cpp | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/src/virtualkeyboard/platforminputcontext.cpp b/src/virtualkeyboard/platforminputcontext.cpp index 6d555160..8b5ce99b 100644 --- a/src/virtualkeyboard/platforminputcontext.cpp +++ b/src/virtualkeyboard/platforminputcontext.cpp @@ -84,18 +84,17 @@ void PlatformInputContext::commit() void PlatformInputContext::update(Qt::InputMethodQueries queries) { VIRTUALKEYBOARD_DEBUG() << "PlatformInputContext::update():" << queries; - bool enabled = inputMethodQuery(Qt::ImEnabled).toBool(); -#ifdef QT_VIRTUALKEYBOARD_DESKTOP - if (enabled && !m_inputPanel) { - m_inputPanel = new DesktopInputPanel(this); - m_inputPanel->createView(); - m_selectionControl = new DesktopInputSelectionControl(this, m_inputContext); - m_selectionControl->createHandles(); - } -#endif - if (m_inputContext) { + bool enabled = inputMethodQuery(Qt::ImEnabled).toBool(); if (enabled) { +#ifdef QT_VIRTUALKEYBOARD_DESKTOP + if (!m_inputPanel) { + m_inputPanel = new DesktopInputPanel(this); + m_inputPanel->createView(); + m_selectionControl = new DesktopInputSelectionControl(this, m_inputContext); + m_selectionControl->createHandles(); + } +#endif m_inputContext->update(queries); if (m_visible) updateInputPanelVisible(); |