diff options
-rw-r--r-- | src/virtualkeyboard/platforminputcontext.cpp | 42 | ||||
-rw-r--r-- | src/virtualkeyboard/platforminputcontext.h | 2 |
2 files changed, 33 insertions, 11 deletions
diff --git a/src/virtualkeyboard/platforminputcontext.cpp b/src/virtualkeyboard/platforminputcontext.cpp index d34f2a2b..ca1e00af 100644 --- a/src/virtualkeyboard/platforminputcontext.cpp +++ b/src/virtualkeyboard/platforminputcontext.cpp @@ -34,7 +34,8 @@ PlatformInputContext::PlatformInputContext() : m_focusObject(0), m_locale(), m_inputDirection(m_locale.textDirection()), - m_filterEvent(0) + m_filterEvent(0), + m_visible(false) { } @@ -73,10 +74,13 @@ void PlatformInputContext::update(Qt::InputMethodQueries queries) #endif if (m_declarativeContext) { - if (enabled) + if (enabled) { m_declarativeContext->update(queries); - else + if (m_visible) + updateInputPanelVisible(); + } else { hideInputPanel(); + } m_declarativeContext->setFocus(enabled); } } @@ -98,18 +102,20 @@ bool PlatformInputContext::isAnimating() const void PlatformInputContext::showInputPanel() { - if (!m_inputPanel || m_inputPanel->isVisible()) - return; - m_inputPanel->show(); - emitInputPanelVisibleChanged(); + if (!m_visible) { + VIRTUALKEYBOARD_DEBUG() << "PlatformInputContext::showInputPanel()"; + m_visible = true; + } + updateInputPanelVisible(); } void PlatformInputContext::hideInputPanel() { - if (!m_inputPanel || !m_inputPanel->isVisible()) - return; - m_inputPanel->hide(); - emitInputPanelVisibleChanged(); + if (m_visible) { + VIRTUALKEYBOARD_DEBUG() << "PlatformInputContext::hideInputPanel()"; + m_visible = false; + } + updateInputPanelVisible(); } bool PlatformInputContext::isInputPanelVisible() const @@ -222,3 +228,17 @@ void PlatformInputContext::keyboardRectangleChanged() { m_inputPanel->setInputRect(m_declarativeContext->keyboardRectangle().toRect()); } + +void PlatformInputContext::updateInputPanelVisible() +{ + if (!m_inputPanel) + return; + + if (m_visible && !m_inputPanel->isVisible()) { + m_inputPanel->show(); + emitInputPanelVisibleChanged(); + } else if (!m_visible && m_inputPanel->isVisible()) { + m_inputPanel->hide(); + emitInputPanelVisibleChanged(); + } +} diff --git a/src/virtualkeyboard/platforminputcontext.h b/src/virtualkeyboard/platforminputcontext.h index 2dc0183d..970e9e89 100644 --- a/src/virtualkeyboard/platforminputcontext.h +++ b/src/virtualkeyboard/platforminputcontext.h @@ -70,6 +70,7 @@ protected: private slots: void keyboardRectangleChanged(); + void updateInputPanelVisible(); private: friend class DeclarativeInputContext; @@ -79,6 +80,7 @@ private: QLocale m_locale; Qt::LayoutDirection m_inputDirection; QEvent *m_filterEvent; + bool m_visible; }; #endif |