From 5dd7cd5316dc9afd0e99d5c0e17a432a9cb6d33a Mon Sep 17 00:00:00 2001 From: Pekka Vuorela Date: Thu, 29 Mar 2012 16:21:52 +0300 Subject: Adapt QNX platform input contexts to QGuiApplication::focusObject() Change-Id: I4c5028f76b52e3838231eff2a599e85347c16598 Reviewed-by: Sean Harmer Reviewed-by: Kevin Krammer Reviewed-by: Robin Burchell --- src/plugins/platforms/qnx/qqnxinputcontext_imf.cpp | 56 +++++++--------------- src/plugins/platforms/qnx/qqnxinputcontext_imf.h | 2 +- .../platforms/qnx/qqnxinputcontext_noimf.cpp | 14 ++---- src/plugins/platforms/qnx/qqnxinputcontext_noimf.h | 2 +- 4 files changed, 24 insertions(+), 50 deletions(-) diff --git a/src/plugins/platforms/qnx/qqnxinputcontext_imf.cpp b/src/plugins/platforms/qnx/qqnxinputcontext_imf.cpp index efe4229b3b..976249f229 100644 --- a/src/plugins/platforms/qnx/qqnxinputcontext_imf.cpp +++ b/src/plugins/platforms/qnx/qqnxinputcontext_imf.cpp @@ -704,10 +704,6 @@ QQnxInputContext::QQnxInputContext(QQnxAbstractVirtualKeyboard &keyboard): connect(&keyboard, SIGNAL(localeChanged(QLocale)), this, SLOT(keyboardLocaleChanged(QLocale))); keyboardVisibilityChanged(keyboard.isVisible()); keyboardLocaleChanged(keyboard.locale()); - - QInputMethod *inputMethod = qApp->inputMethod(); - connect(inputMethod, SIGNAL(inputItemChanged()), this, SLOT(inputItemChanged())); - } QQnxInputContext::~QQnxInputContext() @@ -948,8 +944,7 @@ bool QQnxInputContext::hasSession() bool QQnxInputContext::hasSelectedText() { - QInputPanel *panel = qApp->inputPanel(); - QObject *input = panel->inputItem(); + QObject *input = qGuiApp->focusObject(); if (!input) return false; @@ -965,9 +960,8 @@ bool QQnxInputContext::dispatchRequestSoftwareInputPanel() #if defined(QQNXINPUTCONTEXT_DEBUG) qDebug() << "QQNX: requesting virtual keyboard"; #endif - QInputPanel *panel = qApp->inputPanel(); - QObject *input = panel->inputItem(); - if (!imfAvailable() || !input) + QObject *input = qGuiApp->focusObject(); + if (!imfAvailable() || !input || !inputMethodAccepted()) return true; if (!hasSession()) @@ -1140,8 +1134,7 @@ void QQnxInputContext::endComposition() if (!m_isComposing) return; - QInputPanel *panel = qApp->inputPanel(); - QObject *input = panel->inputItem(); + QObject *input = qGuiApp->focusObject(); if (!imfAvailable() || !input) return; @@ -1163,8 +1156,7 @@ void QQnxInputContext::setComposingText(QString const& composingText) m_composingText = composingText; m_isComposing = true; - QInputPanel *panel = qApp->inputPanel(); - QObject *input = panel->inputItem(); + QObject *input = qGuiApp->focusObject(); if (!imfAvailable() || !input) return; @@ -1275,8 +1267,7 @@ int32_t QQnxInputContext::onCommitText(input_session_t *ic, spannable_string_t * if (!isSessionOkay(ic)) return 0; - QInputPanel *panel = qApp->inputPanel(); - QObject *input = panel->inputItem(); + QObject *input = qGuiApp->focusObject(); if (!imfAvailable() || !input) return 0; @@ -1305,8 +1296,7 @@ int32_t QQnxInputContext::onDeleteSurroundingText(input_session_t *ic, int32_t l if (!isSessionOkay(ic)) return 0; - QInputPanel *panel = qApp->inputPanel(); - QObject *input = panel->inputItem(); + QObject *input = qGuiApp->focusObject(); if (!imfAvailable() || !input) return 0; @@ -1349,8 +1339,7 @@ int32_t QQnxInputContext::onFinishComposingText(input_session_t *ic) if (!isSessionOkay(ic)) return 0; - QInputPanel *panel = qApp->inputPanel(); - QObject *input = panel->inputItem(); + QObject *input = qGuiApp->focusObject(); if (!imfAvailable() || !input) return 0; @@ -1391,8 +1380,7 @@ int32_t QQnxInputContext::onGetCursorPosition(input_session_t *ic) if (!isSessionOkay(ic)) return 0; - QInputPanel *panel = qApp->inputPanel(); - QObject *input = panel->inputItem(); + QObject *input = qGuiApp->focusObject(); if (!imfAvailable() || !input) return 0; @@ -1434,8 +1422,7 @@ spannable_string_t *QQnxInputContext::onGetSelectedText(input_session_t *ic, int if (!isSessionOkay(ic)) return toSpannableString(""); - QInputPanel *panel = qApp->inputPanel(); - QObject *input = panel->inputItem(); + QObject *input = qGuiApp->focusObject(); if (!imfAvailable() || !input) return 0; @@ -1456,8 +1443,7 @@ spannable_string_t *QQnxInputContext::onGetTextAfterCursor(input_session_t *ic, if (!isSessionOkay(ic)) return toSpannableString(""); - QInputPanel *panel = qApp->inputPanel(); - QObject *input = panel->inputItem(); + QObject *input = qGuiApp->focusObject(); if (!imfAvailable() || !input) return toSpannableString(""); @@ -1479,8 +1465,7 @@ spannable_string_t *QQnxInputContext::onGetTextBeforeCursor(input_session_t *ic, if (!isSessionOkay(ic)) return toSpannableString(""); - QInputPanel *panel = qApp->inputPanel(); - QObject *input = panel->inputItem(); + QObject *input = qGuiApp->focusObject(); if (!imfAvailable() || !input) return toSpannableString(""); @@ -1561,8 +1546,7 @@ int32_t QQnxInputContext::onSetComposingRegion(input_session_t *ic, int32_t star if (!isSessionOkay(ic)) return 0; - QInputPanel *panel = qApp->inputPanel(); - QObject *input = panel->inputItem(); + QObject *input = qGuiApp->focusObject(); if (!imfAvailable() || !input) return 0; @@ -1596,8 +1580,7 @@ int32_t QQnxInputContext::onSetComposingText(input_session_t *ic, spannable_stri if (!isSessionOkay(ic)) return 0; - QInputPanel *panel = qApp->inputPanel(); - QObject *input = panel->inputItem(); + QObject *input = qGuiApp->focusObject(); if (!imfAvailable() || !input) return 0; @@ -1674,20 +1657,17 @@ void QQnxInputContext::keyboardLocaleChanged(const QLocale &locale) } } -void QQnxInputContext::inputItemChanged() +void QQnxInputContext::setFocusObject(QObject *object) { - QInputMethod *inputMethod = qApp->inputMethod(); - QObject *inputItem = inputMethod->inputItem(); - #if defined(QQNXINPUTCONTEXT_DEBUG) - qDebug() << Q_FUNC_INFO << "input item=" << inputItem; + qDebug() << Q_FUNC_INFO << "input item=" << object; #endif - if (!inputItem) { + if (!inputMethodAccepted()) { if (m_inputPanelVisible) hideInputPanel(); } else { - if (qobject_cast(inputItem)) + if (qobject_cast(object)) m_virtualKeyboard.setKeyboardMode(QQnxAbstractVirtualKeyboard::Phone); else m_virtualKeyboard.setKeyboardMode(QQnxAbstractVirtualKeyboard::Default); diff --git a/src/plugins/platforms/qnx/qqnxinputcontext_imf.h b/src/plugins/platforms/qnx/qqnxinputcontext_imf.h index faf3be4daa..5f7d95bc4a 100644 --- a/src/plugins/platforms/qnx/qqnxinputcontext_imf.h +++ b/src/plugins/platforms/qnx/qqnxinputcontext_imf.h @@ -74,6 +74,7 @@ public: bool isInputPanelVisible() const; QLocale locale() const; + void setFocusObject(QObject *object); protected: // Filters only for IMF events. @@ -82,7 +83,6 @@ protected: private Q_SLOTS: void keyboardVisibilityChanged(bool visible); void keyboardLocaleChanged(const QLocale &locale); - void inputItemChanged(); private: // IMF Event dispatchers diff --git a/src/plugins/platforms/qnx/qqnxinputcontext_noimf.cpp b/src/plugins/platforms/qnx/qqnxinputcontext_noimf.cpp index 7bc0d5853a..4d229fd872 100644 --- a/src/plugins/platforms/qnx/qqnxinputcontext_noimf.cpp +++ b/src/plugins/platforms/qnx/qqnxinputcontext_noimf.cpp @@ -58,9 +58,6 @@ QQnxInputContext::QQnxInputContext(QQnxAbstractVirtualKeyboard &keyboard) : connect(&keyboard, SIGNAL(localeChanged(QLocale)), this, SLOT(keyboardLocaleChanged(QLocale))); keyboardVisibilityChanged(keyboard.isVisible()); keyboardLocaleChanged(keyboard.locale()); - - QInputMethod *inputMethod = qApp->inputMethod(); - connect(inputMethod, SIGNAL(inputItemChanged()), this, SLOT(inputItemChanged())); } QQnxInputContext::~QQnxInputContext() @@ -165,20 +162,17 @@ void QQnxInputContext::keyboardLocaleChanged(const QLocale &locale) } } -void QQnxInputContext::inputItemChanged() +void QQnxInputContext::setFocusObject(QObject *object) { - QInputMethod *inputMethod = qApp->inputMethod(); - QObject *inputItem = inputMethod->inputItem(); - #if defined(QQNXINPUTCONTEXT_DEBUG) - qDebug() << Q_FUNC_INFO << "input item=" << inputItem; + qDebug() << Q_FUNC_INFO << "input item=" << object; #endif - if (!inputItem) { + if (!inputMethodAccepted()) { if (m_inputPanelVisible) hideInputPanel(); } else { - if (qobject_cast(inputItem)) + if (qobject_cast(object)) m_virtualKeyboard.setKeyboardMode(QQnxAbstractVirtualKeyboard::Phone); else m_virtualKeyboard.setKeyboardMode(QQnxAbstractVirtualKeyboard::Default); diff --git a/src/plugins/platforms/qnx/qqnxinputcontext_noimf.h b/src/plugins/platforms/qnx/qqnxinputcontext_noimf.h index 70b1359a83..d73c5136b5 100644 --- a/src/plugins/platforms/qnx/qqnxinputcontext_noimf.h +++ b/src/plugins/platforms/qnx/qqnxinputcontext_noimf.h @@ -68,11 +68,11 @@ public: bool isInputPanelVisible() const; QLocale locale() const; + void setFocusObject(QObject *object); private Q_SLOTS: void keyboardVisibilityChanged(bool visible); void keyboardLocaleChanged(const QLocale &locale); - void inputItemChanged(); private: bool hasPhysicalKeyboard(); -- cgit v1.2.3