From a98741516c02bbc1f479300d08a39fb5f93e1d64 Mon Sep 17 00:00:00 2001 From: Pekka Vuorela Date: Thu, 5 Jan 2012 13:29:23 +0200 Subject: Move keyboard locale and input direction to QInputPanel Deprecated QGuiApplication::keyboardInputLocale() and keyboardInputDirection(), introduced QInputPanel::locale() and inputDirection(). Change-Id: Ic48c77f10821a949751c73c73f22bd78e2192b9c Reviewed-by: Joona Petrell Reviewed-by: Lars Knoll --- src/corelib/tools/qlocale.qdoc | 4 ++-- src/gui/kernel/qguiapplication.cpp | 15 ++++++--------- src/gui/kernel/qguiapplication.h | 5 ++--- src/gui/kernel/qinputpanel.cpp | 19 +++++++++++++++++++ src/gui/kernel/qinputpanel.h | 7 +++++++ src/gui/text/qlinecontrol_p.h | 2 +- src/gui/text/qtextengine.cpp | 3 ++- src/widgets/widgets/qwidgetlinecontrol_p.h | 3 ++- 8 files changed, 41 insertions(+), 17 deletions(-) diff --git a/src/corelib/tools/qlocale.qdoc b/src/corelib/tools/qlocale.qdoc index c8d8a38929..0337c708a9 100644 --- a/src/corelib/tools/qlocale.qdoc +++ b/src/corelib/tools/qlocale.qdoc @@ -89,7 +89,7 @@ pair; it does not use the system locale database. \note For the current keyboard input locale take a look at - QApplication::keyboardInputLocale(). + QInputPanel::locale(). QLocale's data is based on Common Locale Data Repository v1.8.1. @@ -114,7 +114,7 @@ California, Berkeley and its contributors. \sa QString::arg(), QString::toInt(), QString::toDouble(), - QApplication::keyboardInputLocale() + QInputPanel::locale() */ /*! diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index aaefb2c31b..96b9222fe0 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -68,7 +68,6 @@ #include #include "private/qwindowsysteminterface_qpa_p.h" #include "private/qwindow_p.h" -#include "private/qkeymapper_p.h" #include "private/qcursor_p.h" #include "private/qdnd_p.h" #include @@ -1463,26 +1462,24 @@ uint QGuiApplicationPrivate::currentKeyPlatform() /*! \since 4.2 + \obsolete - Returns the current keyboard input locale. + Returns the current keyboard input locale. Replaced with QInputPanel::locale() */ QLocale QGuiApplication::keyboardInputLocale() { - if (!QGuiApplicationPrivate::checkInstance("keyboardInputLocale")) - return QLocale::c(); - return qt_keymapper_private()->keyboardInputLocale; + return qApp ? qApp->inputPanel()->locale() : QLocale::c(); } /*! \since 4.2 + \obsolete - Returns the current keyboard input direction. + Returns the current keyboard input direction. Replaced with QInputPanel::inputDirection() */ Qt::LayoutDirection QGuiApplication::keyboardInputDirection() { - if (!QGuiApplicationPrivate::checkInstance("keyboardInputDirection")) - return Qt::LeftToRight; - return qt_keymapper_private()->keyboardInputDirection; + return qApp ? qApp->inputPanel()->inputDirection() : Qt::LeftToRight; } /*! diff --git a/src/gui/kernel/qguiapplication.h b/src/gui/kernel/qguiapplication.h index c66cb7d22d..7223e2639e 100644 --- a/src/gui/kernel/qguiapplication.h +++ b/src/gui/kernel/qguiapplication.h @@ -118,9 +118,8 @@ public: static inline bool isRightToLeft() { return layoutDirection() == Qt::RightToLeft; } static inline bool isLeftToRight() { return layoutDirection() == Qt::LeftToRight; } - // ### move to QInputPanel - static QLocale keyboardInputLocale(); - static Qt::LayoutDirection keyboardInputDirection(); + QT_DEPRECATED static QLocale keyboardInputLocale(); + QT_DEPRECATED static Qt::LayoutDirection keyboardInputDirection(); QStyleHints *styleHints() const; QInputPanel *inputPanel() const; diff --git a/src/gui/kernel/qinputpanel.cpp b/src/gui/kernel/qinputpanel.cpp index 1459a8e831..3eec3e89bf 100644 --- a/src/gui/kernel/qinputpanel.cpp +++ b/src/gui/kernel/qinputpanel.cpp @@ -41,6 +41,7 @@ #include #include +#include "private/qkeymapper_p.h" QT_BEGIN_NAMESPACE @@ -247,6 +248,24 @@ bool QInputPanel::isAnimating() const return false; } +/*! + \property QInputPanel::locale + \brief Current input locale. +*/ +QLocale QInputPanel::locale() const +{ + return qt_keymapper_private()->keyboardInputLocale; +} + +/*! + \property QInputPanel::inputDirection + \brief Current input direction. +*/ +Qt::LayoutDirection QInputPanel::inputDirection() const +{ + return qt_keymapper_private()->keyboardInputDirection; +} + /*! Called by the input item to inform the platform input methods when there has been state changes in editor's input method query attributes. When calling the function diff --git a/src/gui/kernel/qinputpanel.h b/src/gui/kernel/qinputpanel.h index 66f7f3be5a..33e49f28f4 100644 --- a/src/gui/kernel/qinputpanel.h +++ b/src/gui/kernel/qinputpanel.h @@ -64,6 +64,8 @@ class Q_GUI_EXPORT QInputPanel : public QObject Q_PROPERTY(QRectF keyboardRectangle READ keyboardRectangle NOTIFY keyboardRectangleChanged) Q_PROPERTY(bool visible READ visible NOTIFY visibleChanged) Q_PROPERTY(bool animating READ isAnimating NOTIFY animatingChanged) + Q_PROPERTY(QLocale locale READ locale NOTIFY localeChanged) + Q_PROPERTY(Qt::LayoutDirection inputDirection READ inputDirection NOTIFY inputDirectionChanged) Q_ENUMS(Action) public: @@ -92,6 +94,9 @@ public: bool isAnimating() const; + QLocale locale() const; + Qt::LayoutDirection inputDirection() const; + public Q_SLOTS: void show(); void hide(); @@ -108,6 +113,8 @@ Q_SIGNALS: void keyboardRectangleChanged(); void visibleChanged(); void animatingChanged(); + void localeChanged(); + void inputDirectionChanged(Qt::LayoutDirection newDirection); private: friend class QGuiApplication; diff --git a/src/gui/text/qlinecontrol_p.h b/src/gui/text/qlinecontrol_p.h index 166300f997..fb14df27bb 100644 --- a/src/gui/text/qlinecontrol_p.h +++ b/src/gui/text/qlinecontrol_p.h @@ -277,7 +277,7 @@ public: Qt::LayoutDirection layoutDirection() const { if (m_layoutDirection == Qt::LayoutDirectionAuto) { if (m_text.isEmpty()) - return QGuiApplication::keyboardInputDirection(); + return qApp->inputPanel()->inputDirection(); return m_text.isRightToLeft() ? Qt::RightToLeft : Qt::LeftToRight; } return m_layoutDirection; diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp index 00418bae5a..0dd8d0bef3 100644 --- a/src/gui/text/qtextengine.cpp +++ b/src/gui/text/qtextengine.cpp @@ -54,6 +54,7 @@ #include #include "qtextdocument_p.h" #include +#include #include @@ -1408,7 +1409,7 @@ bool QTextEngine::isRightToLeft() const itemize(); // this places the cursor in the right position depending on the keyboard layout if (layoutData->string.isEmpty()) - return QGuiApplication::keyboardInputDirection() == Qt::RightToLeft; + return qApp ? qApp->inputPanel()->inputDirection() == Qt::RightToLeft : false; return layoutData->string.isRightToLeft(); } diff --git a/src/widgets/widgets/qwidgetlinecontrol_p.h b/src/widgets/widgets/qwidgetlinecontrol_p.h index b39a0b3ba1..d8f27a4003 100644 --- a/src/widgets/widgets/qwidgetlinecontrol_p.h +++ b/src/widgets/widgets/qwidgetlinecontrol_p.h @@ -62,6 +62,7 @@ #include "QtWidgets/qstyleoption.h" #include "QtCore/qpointer.h" #include "QtGui/qclipboard.h" +#include "QtGui/qinputpanel.h" #include "QtCore/qpoint.h" #include "QtWidgets/qcompleter.h" #include "QtCore/qthread.h" @@ -318,7 +319,7 @@ public: Qt::LayoutDirection layoutDirection() const { if (m_layoutDirection == Qt::LayoutDirectionAuto) { if (m_text.isEmpty()) - return QApplication::keyboardInputDirection(); + return qApp->inputPanel()->inputDirection(); return m_text.isRightToLeft() ? Qt::RightToLeft : Qt::LeftToRight; } return m_layoutDirection; -- cgit v1.2.3