summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gui/kernel/qinputpanel.cpp13
-rw-r--r--src/gui/kernel/qplatforminputcontext_qpa.cpp22
-rw-r--r--src/gui/kernel/qplatforminputcontext_qpa.h5
-rw-r--r--tests/auto/gui/kernel/qinputpanel/tst_qinputpanel.cpp26
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 <qinputpanel.h>
#include <private/qinputpanel_p.h>
-#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 <qplatforminputcontext_qpa.h>
#include <qguiapplication.h>
#include <QRect>
+#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"