aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items
diff options
context:
space:
mode:
authorVolker Hilsheimer <volker.hilsheimer@qt.io>2021-11-30 21:10:44 +0100
committerDoris Verria <doris.verria@qt.io>2023-12-08 20:11:27 +0100
commit1ca9928856c47108000ffe5f310f2b99740f087b (patch)
tree7743dcf9dc75d003c40648724fb413880d722f93 /src/quick/items
parentfe0b70b352b364fe0c0eba5838d2ae1867fba604 (diff)
Move focusReason from QQuickControl to QQuickItem
[ChangeLog][QtQuick][Item] The focusReason property has now moved from QQuickControl to QQuickItem. Task-number: QTBUG-117596 Change-Id: I7ddfbe535b6f0e7289dd3408a074ad0b8aa4de01 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src/quick/items')
-rw-r--r--src/quick/items/qquickitem.cpp25
-rw-r--r--src/quick/items/qquickitem.h6
-rw-r--r--src/quick/items/qquickitem_p.h2
3 files changed, 33 insertions, 0 deletions
diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp
index 1e9d9cb1d9..153c9ead3d 100644
--- a/src/quick/items/qquickitem.cpp
+++ b/src/quick/items/qquickitem.cpp
@@ -3198,6 +3198,7 @@ QQuickItemPrivate::QQuickItemPrivate()
, maybeHasSubsceneDeliveryAgent(true)
, subtreeTransformChangedEnabled(true)
, inDestructor(false)
+ , focusReason(Qt::OtherFocusReason)
, dirtyAttributes(0)
, nextDirtyItem(nullptr)
, prevDirtyItem(nullptr)
@@ -7834,6 +7835,30 @@ QQuickItem *QQuickItem::scopedFocusItem() const
}
/*!
+ \qmlproperty enumeration QtQuick::Item::focusReason
+ \since 6.7
+
+ \input item.qdocinc focus-reason
+
+ \note This property was a member of {QQuickControl} {Control} until Qt 6.7.
+*/
+Qt::FocusReason QQuickItem::focusReason() const
+{
+ Q_D(const QQuickItem);
+ return static_cast<Qt::FocusReason>(d->focusReason);
+}
+
+void QQuickItem::setFocusReason(Qt::FocusReason reason)
+{
+ Q_D(QQuickItem);
+ if (d->focusReason == reason)
+ return;
+
+ d->focusReason = reason;
+ emit focusReasonChanged();
+}
+
+/*!
Returns \c true if this item is an ancestor of \a child (i.e., if this item
is \a child's parent, or one of \a child's parent's ancestors).
diff --git a/src/quick/items/qquickitem.h b/src/quick/items/qquickitem.h
index 4f184d3118..d3d9c2cad4 100644
--- a/src/quick/items/qquickitem.h
+++ b/src/quick/items/qquickitem.h
@@ -101,6 +101,8 @@ class Q_QUICK_EXPORT QQuickItem : public QObject, public QQmlParserStatus
Q_PROPERTY(bool focus READ hasFocus WRITE setFocus NOTIFY focusChanged FINAL)
Q_PROPERTY(bool activeFocus READ hasActiveFocus NOTIFY activeFocusChanged FINAL)
Q_PROPERTY(bool activeFocusOnTab READ activeFocusOnTab WRITE setActiveFocusOnTab NOTIFY activeFocusOnTabChanged FINAL REVISION(2, 1))
+ QT6_ONLY(Q_PROPERTY(Qt::FocusReason focusReason READ focusReason WRITE setFocusReason NOTIFY focusReasonChanged))
+ QT7_ONLY(Q_PROPERTY(Qt::FocusReason focusReason READ focusReason WRITE setFocusReason NOTIFY focusReasonChanged FINAL))
Q_PROPERTY(qreal rotation READ rotation WRITE setRotation NOTIFY rotationChanged)
Q_PROPERTY(qreal scale READ scale WRITE setScale NOTIFY scaleChanged)
@@ -270,6 +272,9 @@ public:
bool isFocusScope() const;
QQuickItem *scopedFocusItem() const;
+ Qt::FocusReason focusReason() const;
+ void setFocusReason(Qt::FocusReason reason);
+
bool isAncestorOf(const QQuickItem *child) const;
Qt::MouseButtons acceptedMouseButtons() const;
@@ -383,6 +388,7 @@ Q_SIGNALS:
void stateChanged(const QString &);
void focusChanged(bool);
void activeFocusChanged(bool);
+ Q_REVISION(6, 7) void focusReasonChanged();
Q_REVISION(2, 1) void activeFocusOnTabChanged(bool);
void parentChanged(QQuickItem *);
void transformOriginChanged(TransformOrigin);
diff --git a/src/quick/items/qquickitem_p.h b/src/quick/items/qquickitem_p.h
index 63c8896680..db96459fca 100644
--- a/src/quick/items/qquickitem_p.h
+++ b/src/quick/items/qquickitem_p.h
@@ -491,6 +491,8 @@ public:
// (e.g. when parent has ItemIsViewport and child has ItemObservesViewport)
quint32 subtreeTransformChangedEnabled:1;
quint32 inDestructor:1; // has entered ~QQuickItem
+ quint32 focusReason:4;
+ // Bit 49
enum DirtyType {
TransformOrigin = 0x00000001,