From 8ae55a3484c0811cb975572dea396b978a54836b Mon Sep 17 00:00:00 2001 From: Pekka Vuorela Date: Thu, 5 Jan 2012 18:03:49 +0200 Subject: Input direction/locale to come from platform input context Change-Id: Ib049693211a08dcffc9dbe49add54e7feab38978 Reviewed-by: Lars Knoll Reviewed-by: Joona Petrell --- src/gui/kernel/qinputpanel.cpp | 13 ++++++++--- src/gui/kernel/qplatforminputcontext_qpa.cpp | 22 ++++++++++++++++++ src/gui/kernel/qplatforminputcontext_qpa.h | 5 +++++ .../gui/kernel/qinputpanel/tst_qinputpanel.cpp | 26 ++++++++++++++++++++++ 4 files changed, 63 insertions(+), 3 deletions(-) diff --git a/src/gui/kernel/qinputpanel.cpp b/src/gui/kernel/qinputpanel.cpp index 804bcda4dc..d6dd55b651 100644 --- a/src/gui/kernel/qinputpanel.cpp +++ b/src/gui/kernel/qinputpanel.cpp @@ -41,7 +41,6 @@ #include #include -#include "private/qkeymapper_p.h" QT_BEGIN_NAMESPACE @@ -254,7 +253,11 @@ bool QInputPanel::isAnimating() const */ QLocale QInputPanel::locale() const { - return qt_keymapper_private()->keyboardInputLocale; + Q_D(const QInputPanel); + QPlatformInputContext *ic = d->platformInputContext(); + if (ic) + return ic->locale(); + return QLocale::c(); } /*! @@ -263,7 +266,11 @@ QLocale QInputPanel::locale() const */ Qt::LayoutDirection QInputPanel::inputDirection() const { - return qt_keymapper_private()->keyboardInputDirection; + Q_D(const QInputPanel); + QPlatformInputContext *ic = d->platformInputContext(); + if (ic) + return ic->inputDirection(); + return Qt::LeftToRight; } /*! diff --git a/src/gui/kernel/qplatforminputcontext_qpa.cpp b/src/gui/kernel/qplatforminputcontext_qpa.cpp index 02b51712bc..1e82507653 100644 --- a/src/gui/kernel/qplatforminputcontext_qpa.cpp +++ b/src/gui/kernel/qplatforminputcontext_qpa.cpp @@ -42,6 +42,7 @@ #include #include #include +#include "private/qkeymapper_p.h" QT_BEGIN_NAMESPACE @@ -207,4 +208,25 @@ void QPlatformInputContext::emitInputPanelVisibleChanged() emit qApp->inputPanel()->visibleChanged(); } +QLocale QPlatformInputContext::locale() const +{ + return qt_keymapper_private()->keyboardInputLocale; +} + +void QPlatformInputContext::emitLocaleChanged() +{ + emit qApp->inputPanel()->localeChanged(); +} + +Qt::LayoutDirection QPlatformInputContext::inputDirection() const +{ + return qt_keymapper_private()->keyboardInputDirection; +} + +void QPlatformInputContext::emitInputDirectionChanged(Qt::LayoutDirection newDirection) +{ + emit qApp->inputPanel()->inputDirectionChanged(newDirection); +} + + QT_END_NAMESPACE diff --git a/src/gui/kernel/qplatforminputcontext_qpa.h b/src/gui/kernel/qplatforminputcontext_qpa.h index 289b3316bd..463238f336 100644 --- a/src/gui/kernel/qplatforminputcontext_qpa.h +++ b/src/gui/kernel/qplatforminputcontext_qpa.h @@ -77,6 +77,11 @@ public: virtual void hideInputPanel(); virtual bool isInputPanelVisible() const; void emitInputPanelVisibleChanged(); + + virtual QLocale locale() const; + void emitLocaleChanged(); + virtual Qt::LayoutDirection inputDirection() const; + void emitInputDirectionChanged(Qt::LayoutDirection newDirection); }; QT_END_NAMESPACE diff --git a/tests/auto/gui/kernel/qinputpanel/tst_qinputpanel.cpp b/tests/auto/gui/kernel/qinputpanel/tst_qinputpanel.cpp index dfce0828da..b46899a84d 100644 --- a/tests/auto/gui/kernel/qinputpanel/tst_qinputpanel.cpp +++ b/tests/auto/gui/kernel/qinputpanel/tst_qinputpanel.cpp @@ -54,6 +54,8 @@ public: m_updateCallCount(0), m_resetCallCount(0), m_commitCallCount(0), + m_localeCallCount(0), + m_inputDirectionCallCount(0), m_lastQueries(Qt::ImhNone), m_action(QInputPanel::Click), m_cursorPosition(0), @@ -91,12 +93,24 @@ public: { return m_visible; } + virtual QLocale locale() const + { + m_localeCallCount++; + return QLocale::c(); + } + virtual Qt::LayoutDirection inputDirection() const + { + m_inputDirectionCallCount++; + return Qt::LeftToRight; + } bool m_animating; bool m_visible; int m_updateCallCount; int m_resetCallCount; int m_commitCallCount; + mutable int m_localeCallCount; + mutable int m_inputDirectionCallCount; Qt::InputMethodQueries m_lastQueries; QInputPanel::Action m_action; int m_cursorPosition; @@ -144,6 +158,7 @@ private slots: void commit(); void update(); void query(); + void inputDirection(); private: InputItem m_inputItem; PlatformInputContext m_platformInputContext; @@ -312,5 +327,16 @@ void tst_qinputpanel::query() QCOMPARE(cursorRectangle, QRect(1,2,3,4)); } +void tst_qinputpanel::inputDirection() +{ + QCOMPARE(m_platformInputContext.m_inputDirectionCallCount, 0); + qApp->inputPanel()->inputDirection(); + QCOMPARE(m_platformInputContext.m_inputDirectionCallCount, 1); + + QCOMPARE(m_platformInputContext.m_localeCallCount, 0); + qApp->inputPanel()->locale(); + QCOMPARE(m_platformInputContext.m_localeCallCount, 1); +} + QTEST_MAIN(tst_qinputpanel) #include "tst_qinputpanel.moc" -- cgit v1.2.3