From d4eb5d11104bb823e56cf173e29f9d205320581f Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Fri, 2 Dec 2022 13:49:18 +0100 Subject: [PATCH] Cleanup short-cut id deprecation Wasn't marked deprecated in documentation, and was needed for user construction of QShortcutEvents. Fixes: QTBUG-109090 Change-Id: Ibf0ad83a57de724d9b88a7e610ba04c2c662983b Reviewed-by: Ivan Solovev --- src/gui/kernel/qevent.cpp | 29 +++++++++++++++++++++++++++++ src/gui/kernel/qevent.h | 6 ++++++ src/gui/kernel/qshortcut.cpp | 2 ++ 3 files changed, 37 insertions(+) diff --git a/src/gui/kernel/qevent.cpp b/src/gui/kernel/qevent.cpp index 81617114f67..014bf8bc854 100644 --- a/src/gui/kernel/qevent.cpp +++ b/src/gui/kernel/qevent.cpp @@ -22,6 +22,10 @@ #include #endif +#if QT_CONFIG(shortcut) +#include +#endif + #include QT_BEGIN_NAMESPACE @@ -3682,6 +3686,8 @@ Q_IMPL_EVENT_COMMON(QToolBarChangeEvent) Constructs a shortcut event for the given \a key press, associated with the QShortcut ID \a id. + \deprecated use the other constructor + \a ambiguous specifies whether there is more than one QShortcut for the same key sequence. */ @@ -3690,6 +3696,27 @@ QShortcutEvent::QShortcutEvent(const QKeySequence &key, int id, bool ambiguous) { } +/*! + Constructs a shortcut event for the given \a key press, + associated with the QShortcut \a shortcut. + + \a ambiguous specifies whether there is more than one QShortcut + for the same key sequence. +*/ +QShortcutEvent::QShortcutEvent(const QKeySequence &key, const QShortcut *shortcut, bool ambiguous) + : QEvent(Shortcut), m_sequence(key), m_shortcutId(0), m_ambiguous(ambiguous) +{ + if (shortcut) { + auto priv = static_cast(QShortcutPrivate::get(shortcut)); + auto index = priv->sc_sequences.indexOf(key); + if (index < 0) { + qWarning() << "Given QShortcut does not contain key-sequence " << key; + return; + } + m_shortcutId = priv->sc_ids[index]; + } +} + Q_IMPL_EVENT_COMMON(QShortcutEvent) #endif // QT_CONFIG(shortcut) @@ -4233,6 +4260,8 @@ QDebug operator<<(QDebug dbg, const QEvent *e) /*! \fn int QShortcutEvent::shortcutId() const + \deprecated + Returns the ID of the QShortcut object for which this event was generated. diff --git a/src/gui/kernel/qevent.h b/src/gui/kernel/qevent.h index a5d34171e0b..a3fd09d9a4c 100644 --- a/src/gui/kernel/qevent.h +++ b/src/gui/kernel/qevent.h @@ -36,6 +36,9 @@ class QAction; class QMouseEvent; class QPointerEvent; class QScreen; +#if QT_CONFIG(shortcut) +class QShortcut; +#endif class QTabletEvent; class QTouchEvent; #if QT_CONFIG(gestures) @@ -873,9 +876,12 @@ class Q_GUI_EXPORT QShortcutEvent : public QEvent { Q_DECL_EVENT_COMMON(QShortcutEvent) public: + // Note this is publicly deprecated, but should remain as internal constructor: QShortcutEvent(const QKeySequence &key, int id, bool ambiguous = false); + QShortcutEvent(const QKeySequence &key, const QShortcut *shortcut = nullptr, bool ambiguous = false); inline const QKeySequence &key() const { return m_sequence; } + // Note this is publicly deprecated, but should remain as internal getter: inline int shortcutId() const { return m_shortcutId; } inline bool isAmbiguous() const { return m_ambiguous; } protected: diff --git a/src/gui/kernel/qshortcut.cpp b/src/gui/kernel/qshortcut.cpp index c654ebb578a..b10d96237e9 100644 --- a/src/gui/kernel/qshortcut.cpp +++ b/src/gui/kernel/qshortcut.cpp @@ -536,6 +536,8 @@ QString QShortcut::whatsThis() const /*! Returns the primary key binding's ID. + \deprecated + \sa QShortcutEvent::shortcutId() */ int QShortcut::id() const