Adapt QNX platform input contexts to QGuiApplication::focusObject()

Change-Id: I4c5028f76b52e3838231eff2a599e85347c16598
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com>
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
This commit is contained in:
Pekka Vuorela 2012-03-29 16:21:52 +03:00 committed by Qt by Nokia
parent 8f2a088028
commit 5dd7cd5316
4 changed files with 24 additions and 50 deletions

View File

@ -704,10 +704,6 @@ QQnxInputContext::QQnxInputContext(QQnxAbstractVirtualKeyboard &keyboard):
connect(&keyboard, SIGNAL(localeChanged(QLocale)), this, SLOT(keyboardLocaleChanged(QLocale))); connect(&keyboard, SIGNAL(localeChanged(QLocale)), this, SLOT(keyboardLocaleChanged(QLocale)));
keyboardVisibilityChanged(keyboard.isVisible()); keyboardVisibilityChanged(keyboard.isVisible());
keyboardLocaleChanged(keyboard.locale()); keyboardLocaleChanged(keyboard.locale());
QInputMethod *inputMethod = qApp->inputMethod();
connect(inputMethod, SIGNAL(inputItemChanged()), this, SLOT(inputItemChanged()));
} }
QQnxInputContext::~QQnxInputContext() QQnxInputContext::~QQnxInputContext()
@ -948,8 +944,7 @@ bool QQnxInputContext::hasSession()
bool QQnxInputContext::hasSelectedText() bool QQnxInputContext::hasSelectedText()
{ {
QInputPanel *panel = qApp->inputPanel(); QObject *input = qGuiApp->focusObject();
QObject *input = panel->inputItem();
if (!input) if (!input)
return false; return false;
@ -965,9 +960,8 @@ bool QQnxInputContext::dispatchRequestSoftwareInputPanel()
#if defined(QQNXINPUTCONTEXT_DEBUG) #if defined(QQNXINPUTCONTEXT_DEBUG)
qDebug() << "QQNX: requesting virtual keyboard"; qDebug() << "QQNX: requesting virtual keyboard";
#endif #endif
QInputPanel *panel = qApp->inputPanel(); QObject *input = qGuiApp->focusObject();
QObject *input = panel->inputItem(); if (!imfAvailable() || !input || !inputMethodAccepted())
if (!imfAvailable() || !input)
return true; return true;
if (!hasSession()) if (!hasSession())
@ -1140,8 +1134,7 @@ void QQnxInputContext::endComposition()
if (!m_isComposing) if (!m_isComposing)
return; return;
QInputPanel *panel = qApp->inputPanel(); QObject *input = qGuiApp->focusObject();
QObject *input = panel->inputItem();
if (!imfAvailable() || !input) if (!imfAvailable() || !input)
return; return;
@ -1163,8 +1156,7 @@ void QQnxInputContext::setComposingText(QString const& composingText)
m_composingText = composingText; m_composingText = composingText;
m_isComposing = true; m_isComposing = true;
QInputPanel *panel = qApp->inputPanel(); QObject *input = qGuiApp->focusObject();
QObject *input = panel->inputItem();
if (!imfAvailable() || !input) if (!imfAvailable() || !input)
return; return;
@ -1275,8 +1267,7 @@ int32_t QQnxInputContext::onCommitText(input_session_t *ic, spannable_string_t *
if (!isSessionOkay(ic)) if (!isSessionOkay(ic))
return 0; return 0;
QInputPanel *panel = qApp->inputPanel(); QObject *input = qGuiApp->focusObject();
QObject *input = panel->inputItem();
if (!imfAvailable() || !input) if (!imfAvailable() || !input)
return 0; return 0;
@ -1305,8 +1296,7 @@ int32_t QQnxInputContext::onDeleteSurroundingText(input_session_t *ic, int32_t l
if (!isSessionOkay(ic)) if (!isSessionOkay(ic))
return 0; return 0;
QInputPanel *panel = qApp->inputPanel(); QObject *input = qGuiApp->focusObject();
QObject *input = panel->inputItem();
if (!imfAvailable() || !input) if (!imfAvailable() || !input)
return 0; return 0;
@ -1349,8 +1339,7 @@ int32_t QQnxInputContext::onFinishComposingText(input_session_t *ic)
if (!isSessionOkay(ic)) if (!isSessionOkay(ic))
return 0; return 0;
QInputPanel *panel = qApp->inputPanel(); QObject *input = qGuiApp->focusObject();
QObject *input = panel->inputItem();
if (!imfAvailable() || !input) if (!imfAvailable() || !input)
return 0; return 0;
@ -1391,8 +1380,7 @@ int32_t QQnxInputContext::onGetCursorPosition(input_session_t *ic)
if (!isSessionOkay(ic)) if (!isSessionOkay(ic))
return 0; return 0;
QInputPanel *panel = qApp->inputPanel(); QObject *input = qGuiApp->focusObject();
QObject *input = panel->inputItem();
if (!imfAvailable() || !input) if (!imfAvailable() || !input)
return 0; return 0;
@ -1434,8 +1422,7 @@ spannable_string_t *QQnxInputContext::onGetSelectedText(input_session_t *ic, int
if (!isSessionOkay(ic)) if (!isSessionOkay(ic))
return toSpannableString(""); return toSpannableString("");
QInputPanel *panel = qApp->inputPanel(); QObject *input = qGuiApp->focusObject();
QObject *input = panel->inputItem();
if (!imfAvailable() || !input) if (!imfAvailable() || !input)
return 0; return 0;
@ -1456,8 +1443,7 @@ spannable_string_t *QQnxInputContext::onGetTextAfterCursor(input_session_t *ic,
if (!isSessionOkay(ic)) if (!isSessionOkay(ic))
return toSpannableString(""); return toSpannableString("");
QInputPanel *panel = qApp->inputPanel(); QObject *input = qGuiApp->focusObject();
QObject *input = panel->inputItem();
if (!imfAvailable() || !input) if (!imfAvailable() || !input)
return toSpannableString(""); return toSpannableString("");
@ -1479,8 +1465,7 @@ spannable_string_t *QQnxInputContext::onGetTextBeforeCursor(input_session_t *ic,
if (!isSessionOkay(ic)) if (!isSessionOkay(ic))
return toSpannableString(""); return toSpannableString("");
QInputPanel *panel = qApp->inputPanel(); QObject *input = qGuiApp->focusObject();
QObject *input = panel->inputItem();
if (!imfAvailable() || !input) if (!imfAvailable() || !input)
return toSpannableString(""); return toSpannableString("");
@ -1561,8 +1546,7 @@ int32_t QQnxInputContext::onSetComposingRegion(input_session_t *ic, int32_t star
if (!isSessionOkay(ic)) if (!isSessionOkay(ic))
return 0; return 0;
QInputPanel *panel = qApp->inputPanel(); QObject *input = qGuiApp->focusObject();
QObject *input = panel->inputItem();
if (!imfAvailable() || !input) if (!imfAvailable() || !input)
return 0; return 0;
@ -1596,8 +1580,7 @@ int32_t QQnxInputContext::onSetComposingText(input_session_t *ic, spannable_stri
if (!isSessionOkay(ic)) if (!isSessionOkay(ic))
return 0; return 0;
QInputPanel *panel = qApp->inputPanel(); QObject *input = qGuiApp->focusObject();
QObject *input = panel->inputItem();
if (!imfAvailable() || !input) if (!imfAvailable() || !input)
return 0; 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) #if defined(QQNXINPUTCONTEXT_DEBUG)
qDebug() << Q_FUNC_INFO << "input item=" << inputItem; qDebug() << Q_FUNC_INFO << "input item=" << object;
#endif #endif
if (!inputItem) { if (!inputMethodAccepted()) {
if (m_inputPanelVisible) if (m_inputPanelVisible)
hideInputPanel(); hideInputPanel();
} else { } else {
if (qobject_cast<QAbstractSpinBox*>(inputItem)) if (qobject_cast<QAbstractSpinBox*>(object))
m_virtualKeyboard.setKeyboardMode(QQnxAbstractVirtualKeyboard::Phone); m_virtualKeyboard.setKeyboardMode(QQnxAbstractVirtualKeyboard::Phone);
else else
m_virtualKeyboard.setKeyboardMode(QQnxAbstractVirtualKeyboard::Default); m_virtualKeyboard.setKeyboardMode(QQnxAbstractVirtualKeyboard::Default);

View File

@ -74,6 +74,7 @@ public:
bool isInputPanelVisible() const; bool isInputPanelVisible() const;
QLocale locale() const; QLocale locale() const;
void setFocusObject(QObject *object);
protected: protected:
// Filters only for IMF events. // Filters only for IMF events.
@ -82,7 +83,6 @@ protected:
private Q_SLOTS: private Q_SLOTS:
void keyboardVisibilityChanged(bool visible); void keyboardVisibilityChanged(bool visible);
void keyboardLocaleChanged(const QLocale &locale); void keyboardLocaleChanged(const QLocale &locale);
void inputItemChanged();
private: private:
// IMF Event dispatchers // IMF Event dispatchers

View File

@ -58,9 +58,6 @@ QQnxInputContext::QQnxInputContext(QQnxAbstractVirtualKeyboard &keyboard) :
connect(&keyboard, SIGNAL(localeChanged(QLocale)), this, SLOT(keyboardLocaleChanged(QLocale))); connect(&keyboard, SIGNAL(localeChanged(QLocale)), this, SLOT(keyboardLocaleChanged(QLocale)));
keyboardVisibilityChanged(keyboard.isVisible()); keyboardVisibilityChanged(keyboard.isVisible());
keyboardLocaleChanged(keyboard.locale()); keyboardLocaleChanged(keyboard.locale());
QInputMethod *inputMethod = qApp->inputMethod();
connect(inputMethod, SIGNAL(inputItemChanged()), this, SLOT(inputItemChanged()));
} }
QQnxInputContext::~QQnxInputContext() 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) #if defined(QQNXINPUTCONTEXT_DEBUG)
qDebug() << Q_FUNC_INFO << "input item=" << inputItem; qDebug() << Q_FUNC_INFO << "input item=" << object;
#endif #endif
if (!inputItem) { if (!inputMethodAccepted()) {
if (m_inputPanelVisible) if (m_inputPanelVisible)
hideInputPanel(); hideInputPanel();
} else { } else {
if (qobject_cast<QAbstractSpinBox*>(inputItem)) if (qobject_cast<QAbstractSpinBox*>(object))
m_virtualKeyboard.setKeyboardMode(QQnxAbstractVirtualKeyboard::Phone); m_virtualKeyboard.setKeyboardMode(QQnxAbstractVirtualKeyboard::Phone);
else else
m_virtualKeyboard.setKeyboardMode(QQnxAbstractVirtualKeyboard::Default); m_virtualKeyboard.setKeyboardMode(QQnxAbstractVirtualKeyboard::Default);

View File

@ -68,11 +68,11 @@ public:
bool isInputPanelVisible() const; bool isInputPanelVisible() const;
QLocale locale() const; QLocale locale() const;
void setFocusObject(QObject *object);
private Q_SLOTS: private Q_SLOTS:
void keyboardVisibilityChanged(bool visible); void keyboardVisibilityChanged(bool visible);
void keyboardLocaleChanged(const QLocale &locale); void keyboardLocaleChanged(const QLocale &locale);
void inputItemChanged();
private: private:
bool hasPhysicalKeyboard(); bool hasPhysicalKeyboard();