summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/qnx/qqnxinputcontext_imf.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/platforms/qnx/qqnxinputcontext_imf.cpp')
-rw-r--r--src/plugins/platforms/qnx/qqnxinputcontext_imf.cpp80
1 files changed, 32 insertions, 48 deletions
diff --git a/src/plugins/platforms/qnx/qqnxinputcontext_imf.cpp b/src/plugins/platforms/qnx/qqnxinputcontext_imf.cpp
index 3f9d768ccc..976249f229 100644
--- a/src/plugins/platforms/qnx/qqnxinputcontext_imf.cpp
+++ b/src/plugins/platforms/qnx/qqnxinputcontext_imf.cpp
@@ -41,7 +41,7 @@
#include "qqnxinputcontext_imf.h"
#include "qqnxeventthread.h"
-#include "qqnxvirtualkeyboard.h"
+#include "qqnxabstractvirtualkeyboard.h"
#include <QtWidgets/QAbstractSpinBox>
#include <QtWidgets/QAction>
@@ -674,12 +674,15 @@ static bool imfAvailable()
return s_imfReady;
}
-QQnxInputContext::QQnxInputContext():
+QT_BEGIN_NAMESPACE
+
+QQnxInputContext::QQnxInputContext(QQnxAbstractVirtualKeyboard &keyboard):
QPlatformInputContext(),
m_lastCaretPos(0),
m_isComposing(false),
m_inputPanelVisible(false),
- m_inputPanelLocale(QLocale::c())
+ m_inputPanelLocale(QLocale::c()),
+ m_virtualKeyboad(keyboard)
{
#if defined(QQNXINPUTCONTEXT_DEBUG)
qDebug() << Q_FUNC_INFO;
@@ -697,15 +700,10 @@ QQnxInputContext::QQnxInputContext():
// p_vkb_init_selection_service();
- QQnxVirtualKeyboard &keyboard = QQnxVirtualKeyboard::instance();
connect(&keyboard, SIGNAL(visibilityChanged(bool)), this, SLOT(keyboardVisibilityChanged(bool)));
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()
@@ -946,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;
@@ -959,13 +956,12 @@ bool QQnxInputContext::hasSelectedText()
bool QQnxInputContext::dispatchRequestSoftwareInputPanel()
{
- QQnxVirtualKeyboard::instance().showKeyboard();
+ m_virtualKeyboard.showKeyboard();
#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())
@@ -986,7 +982,7 @@ bool QQnxInputContext::dispatchRequestSoftwareInputPanel()
bool QQnxInputContext::dispatchCloseSoftwareInputPanel()
{
- QQnxVirtualKeyboard::instance().hideKeyboard();
+ m_virtualKeyboard.hideKeyboard();
#if defined(QQNXINPUTCONTEXT_DEBUG)
qDebug() << "QQNX: hiding virtual keyboard";
#endif
@@ -1138,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;
@@ -1161,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;
@@ -1273,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;
@@ -1303,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;
@@ -1347,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;
@@ -1389,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;
@@ -1432,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;
@@ -1454,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("");
@@ -1477,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("");
@@ -1559,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;
@@ -1594,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;
@@ -1672,25 +1657,24 @@ 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<QAbstractSpinBox*>(inputItem)) {
- QQnxVirtualKeyboard::instance().setKeyboardMode(QQnxVirtualKeyboard::NumPunc);
- } else {
- QQnxVirtualKeyboard::instance().setKeyboardMode(QQnxVirtualKeyboard::Default);
- }
+ if (qobject_cast<QAbstractSpinBox*>(object))
+ m_virtualKeyboard.setKeyboardMode(QQnxAbstractVirtualKeyboard::Phone);
+ else
+ m_virtualKeyboard.setKeyboardMode(QQnxAbstractVirtualKeyboard::Default);
+
if (!m_inputPanelVisible)
showInputPanel();
}
}
+
+QT_END_NAMESPACE