diff options
author | Oliver Wolff <oliver.wolff@digia.com> | 2012-10-11 07:40:14 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-10-13 05:51:19 +0200 |
commit | bcbcf5e71884b006b0c89c4509af171de5aa59d7 (patch) | |
tree | 98d6a871d32b87e509ba0dd62d249c0a9be4f163 /src | |
parent | 9e44b76093e08fed7b57b52246f39a38f3265727 (diff) |
Be able to obtain list of possible key combinations in platform integration
As there is no way to obtain the list of possible keys for a shortcut
in a platform independent way there needs to be a way to get that
from the platform integration.
Task-number: QTBUG-26902
Change-Id: I520add56ee09d5c3c58709fb29dad2fbfe4c9d0b
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/gui/kernel/qkeymapper_qpa.cpp | 7 | ||||
-rw-r--r-- | src/gui/kernel/qplatformintegration.cpp | 14 | ||||
-rw-r--r-- | src/gui/kernel/qplatformintegration.h | 2 |
3 files changed, 22 insertions, 1 deletions
diff --git a/src/gui/kernel/qkeymapper_qpa.cpp b/src/gui/kernel/qkeymapper_qpa.cpp index 5073720ed8..0c225a4c91 100644 --- a/src/gui/kernel/qkeymapper_qpa.cpp +++ b/src/gui/kernel/qkeymapper_qpa.cpp @@ -43,6 +43,8 @@ #include <qdebug.h> #include <private/qevent_p.h> #include <private/qlocale_p.h> +#include <private/qguiapplication_p.h> +#include <qpa/qplatformintegration.h> QT_BEGIN_NAMESPACE @@ -66,7 +68,10 @@ void QKeyMapperPrivate::clearMappings() QList<int> QKeyMapperPrivate::possibleKeys(QKeyEvent *e) { - QList<int> result; + QList<int> result = QGuiApplicationPrivate::platformIntegration()->possibleKeys(e); + if (!result.isEmpty()) + return result; + if (e->key() && (e->key() != Qt::Key_unknown)) result << int(e->key() + e->modifiers()); else if (!e->text().isEmpty()) diff --git a/src/gui/kernel/qplatformintegration.cpp b/src/gui/kernel/qplatformintegration.cpp index 631f392284..cf55c59bab 100644 --- a/src/gui/kernel/qplatformintegration.cpp +++ b/src/gui/kernel/qplatformintegration.cpp @@ -313,6 +313,20 @@ Qt::KeyboardModifiers QPlatformIntegration::queryKeyboardModifiers() const } /*! + Should be used to obtain a list of possible shortcuts for the given key + event. As that needs system functionality it cannot be done in qkeymapper. + + One example for more than 1 possibility is the key combination of Shift+5. + That one might trigger a shortcut which is set as "Shift+5" as well as one + using %. These combinations depend on the currently set keyboard layout + which cannot be obtained by Qt functionality. +*/ +QList<int> QPlatformIntegration::possibleKeys(const QKeyEvent *) const +{ + return QList<int>(); +} + +/*! Should be called by the implementation whenever a new screen is added. The first screen added will be the primary screen, used for default-created diff --git a/src/gui/kernel/qplatformintegration.h b/src/gui/kernel/qplatformintegration.h index 7bc6c276c0..7e8888407c 100644 --- a/src/gui/kernel/qplatformintegration.h +++ b/src/gui/kernel/qplatformintegration.h @@ -76,6 +76,7 @@ class QPlatformTheme; class QPlatformDialogHelper; class QPlatformSharedGraphicsCache; class QPlatformServices; +class QKeyEvent; class Q_GUI_EXPORT QPlatformIntegration { @@ -141,6 +142,7 @@ public: virtual QVariant styleHint(StyleHint hint) const; virtual Qt::KeyboardModifiers queryKeyboardModifiers() const; + virtual QList<int> possibleKeys(const QKeyEvent *) const; virtual QStringList themeNames() const; virtual QPlatformTheme *createPlatformTheme(const QString &name) const; |