aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Rauter <matthias.rauter@qt.io>2023-05-31 11:42:23 +0200
committerJan Arve Sæther <jan-arve.saether@qt.io>2023-06-02 14:39:23 +0200
commit247c2b1c8db43e0dc6612cc343ea07aa0b4aef79 (patch)
treec1b061df42fbb1771306a2e6d7266fd7945114a4
parentd0d3fcdab9e8cab6100498e3aec14741809c4444 (diff)
Expose isPropertySet of Layout attached data
The Layout attached data stores whether a property was set or not. This is useful to know from outside the Layout attached property and this patch exposes this information. It was not stored for two properties (alignment, margins), which is also added with this patch. This is also done in preparation for the LayoutProxyItem. Change-Id: Ia1ec33fa1f1f5836857ceba7999d7a0e750f1a66 Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
-rw-r--r--src/quicklayouts/qquicklayout.cpp4
-rw-r--r--src/quicklayouts/qquicklayout_p.h16
2 files changed, 20 insertions, 0 deletions
diff --git a/src/quicklayouts/qquicklayout.cpp b/src/quicklayouts/qquicklayout.cpp
index 64d92d87c7..8510f92a6f 100644
--- a/src/quicklayouts/qquicklayout.cpp
+++ b/src/quicklayouts/qquicklayout.cpp
@@ -85,10 +85,12 @@ QQuickLayoutAttached::QQuickLayoutAttached(QObject *parent)
m_isMaximumWidthSet(false),
m_isMaximumHeightSet(false),
m_changesNotificationEnabled(true),
+ m_isMarginsSet(false),
m_isLeftMarginSet(false),
m_isTopMarginSet(false),
m_isRightMarginSet(false),
m_isBottomMarginSet(false),
+ m_isAlignmentSet(false),
m_horizontalStretch(-1),
m_verticalStretch(-1)
{
@@ -403,6 +405,7 @@ void QQuickLayoutAttached::setColumn(int column)
*/
void QQuickLayoutAttached::setAlignment(Qt::Alignment align)
{
+ m_isAlignmentSet = true;
if (align != m_alignment) {
m_alignment = align;
if (QQuickLayout *layout = parentLayout()) {
@@ -518,6 +521,7 @@ void QQuickLayoutAttached::setVerticalStretchFactor(int factor)
*/
void QQuickLayoutAttached::setMargins(qreal m)
{
+ m_isMarginsSet = true;
if (m == m_defaultMargins)
return;
diff --git a/src/quicklayouts/qquicklayout_p.h b/src/quicklayouts/qquicklayout_p.h
index df9c4cad97..85fb0ae7c0 100644
--- a/src/quicklayouts/qquicklayout_p.h
+++ b/src/quicklayouts/qquicklayout_p.h
@@ -186,21 +186,27 @@ public:
qreal minimumWidth() const { return !m_isMinimumWidthSet ? sizeHint(Qt::MinimumSize, Qt::Horizontal) : m_minimumWidth; }
void setMinimumWidth(qreal width);
+ bool isMinimumWidthSet() const {return m_isMinimumWidthSet; }
qreal minimumHeight() const { return !m_isMinimumHeightSet ? sizeHint(Qt::MinimumSize, Qt::Vertical) : m_minimumHeight; }
void setMinimumHeight(qreal height);
+ bool isMinimumHeightSet() const {return m_isMinimumHeightSet; }
qreal preferredWidth() const { return m_preferredWidth; }
void setPreferredWidth(qreal width);
+ bool isPreferredWidthSet() const {return m_preferredWidth > -1; }
qreal preferredHeight() const { return m_preferredHeight; }
void setPreferredHeight(qreal width);
+ bool isPreferredHeightSet() const {return m_preferredHeight > -1; }
qreal maximumWidth() const { return !m_isMaximumWidthSet ? sizeHint(Qt::MaximumSize, Qt::Horizontal) : m_maximumWidth; }
void setMaximumWidth(qreal width);
+ bool isMaximumWidthSet() const {return m_isMaximumWidthSet; }
qreal maximumHeight() const { return !m_isMaximumHeightSet ? sizeHint(Qt::MaximumSize, Qt::Vertical) : m_maximumHeight; }
void setMaximumHeight(qreal height);
+ bool isMaximumHeightSet() const {return m_isMaximumHeightSet; }
void setMinimumImplicitSize(const QSizeF &sz);
void setMaximumImplicitSize(const QSizeF &sz);
@@ -227,30 +233,38 @@ public:
Qt::Alignment alignment() const { return m_alignment; }
void setAlignment(Qt::Alignment align);
+ bool isAlignmentSet() const {return m_isAlignmentSet; }
int horizontalStretchFactor() const { return m_horizontalStretch; }
void setHorizontalStretchFactor(int stretchFactor);
+ bool isHorizontalStretchFactorSet() const { return m_horizontalStretch > -1; }
int verticalStretchFactor() const { return m_verticalStretch; }
void setVerticalStretchFactor(int stretchFactor);
+ bool isVerticalStretchFactorSet() const { return m_verticalStretch > -1; }
qreal margins() const { return m_defaultMargins; }
void setMargins(qreal m);
+ bool isMarginsSet() const { return m_isMarginsSet; }
qreal leftMargin() const { return m_isLeftMarginSet ? m_margins.left() : m_defaultMargins; }
void setLeftMargin(qreal m);
void resetLeftMargin();
+ bool isLeftMarginSet() const { return m_isLeftMarginSet; }
qreal topMargin() const { return m_isTopMarginSet ? m_margins.top() : m_defaultMargins; }
void setTopMargin(qreal m);
void resetTopMargin();
+ bool isTopMarginSet() const {return m_isTopMarginSet; }
qreal rightMargin() const { return m_isRightMarginSet ? m_margins.right() : m_defaultMargins; }
void setRightMargin(qreal m);
void resetRightMargin();
+ bool isRightMarginSet() const { return m_isRightMarginSet; }
qreal bottomMargin() const { return m_isBottomMarginSet ? m_margins.bottom() : m_defaultMargins; }
void setBottomMargin(qreal m);
void resetBottomMargin();
+ bool isBottomMarginSet() const { return m_isBottomMarginSet; }
QMarginsF qMargins() const {
return QMarginsF(leftMargin(), topMargin(), rightMargin(), bottomMargin());
@@ -346,10 +360,12 @@ private:
unsigned m_isMaximumWidthSet : 1;
unsigned m_isMaximumHeightSet : 1;
unsigned m_changesNotificationEnabled : 1;
+ unsigned m_isMarginsSet : 1;
unsigned m_isLeftMarginSet : 1;
unsigned m_isTopMarginSet : 1;
unsigned m_isRightMarginSet : 1;
unsigned m_isBottomMarginSet : 1;
+ unsigned m_isAlignmentSet : 1;
Qt::Alignment m_alignment;
int m_horizontalStretch;
int m_verticalStretch;