aboutsummaryrefslogtreecommitdiffstats
path: root/src/imports
diff options
context:
space:
mode:
authorDavid Edmundson <davidedmundson@kde.org>2020-04-19 15:14:02 +0100
committerDavid Edmundson <davidedmundson@kde.org>2020-08-26 16:11:46 +0100
commit16613f3741af013f7e380c98df6889d73512d0ad (patch)
tree8375963a816dfe50858ffbb5466797d9f7bc78bb /src/imports
parent9aa152da3d416c7d5b4e0e970b6eb1a301df1028 (diff)
Follow layoutMirroring in Layout margins
If a layout is laid out left to right using the layoutDirection property, we want left Margins on the left, and rightMargin still on the right However, if a layout is mirrored, not only should the layout direction change but also the left margin should now be on the right and vice versa. Task-number: QTBUG-62989 Pick-to: 5.15 Change-Id: Iaae4bc436fd1eb7f1947869563ac325f3d6b79bb Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
Diffstat (limited to 'src/imports')
-rw-r--r--src/imports/layouts/qquickgridlayoutengine_p.h2
-rw-r--r--src/imports/layouts/qquicklayout.cpp5
-rw-r--r--src/imports/layouts/qquicklayout_p.h9
3 files changed, 15 insertions, 1 deletions
diff --git a/src/imports/layouts/qquickgridlayoutengine_p.h b/src/imports/layouts/qquickgridlayoutengine_p.h
index 5529d1049c..ff42fa4d43 100644
--- a/src/imports/layouts/qquickgridlayoutengine_p.h
+++ b/src/imports/layouts/qquickgridlayoutengine_p.h
@@ -107,7 +107,7 @@ public:
void setGeometry(const QRectF &rect) override
{
QQuickLayoutAttached *info = attachedLayoutObject(m_item, false);
- const QRectF r = info ? rect.marginsRemoved(info->qMargins()) : rect;
+ const QRectF r = info ? rect.marginsRemoved(info->effectiveQMargins()) : rect;
const QSizeF oldSize(m_item->width(), m_item->height());
const QSizeF newSize = r.size();
m_item->setPosition(r.topLeft());
diff --git a/src/imports/layouts/qquicklayout.cpp b/src/imports/layouts/qquicklayout.cpp
index 9e981f7de6..dbbd25de85 100644
--- a/src/imports/layouts/qquicklayout.cpp
+++ b/src/imports/layouts/qquicklayout.cpp
@@ -936,6 +936,11 @@ bool QQuickLayout::invalidatedArrangement() const
return d_func()->m_dirtyArrangement;
}
+bool QQuickLayout::isMirrored() const
+{
+ return d_func()->isMirrored();
+}
+
void QQuickLayout::itemSiblingOrderChanged(QQuickItem *item)
{
Q_UNUSED(item);
diff --git a/src/imports/layouts/qquicklayout_p.h b/src/imports/layouts/qquicklayout_p.h
index 77dfb446c8..db883245e5 100644
--- a/src/imports/layouts/qquicklayout_p.h
+++ b/src/imports/layouts/qquicklayout_p.h
@@ -100,6 +100,7 @@ public:
bool invalidated() const;
bool invalidatedArrangement() const;
+ bool isMirrored() const;
/* QQuickItemChangeListener */
void itemSiblingOrderChanged(QQuickItem *item) override;
@@ -257,6 +258,14 @@ public:
return QMarginsF(leftMargin(), topMargin(), rightMargin(), bottomMargin());
}
+ QMarginsF effectiveQMargins() const {
+ bool mirrored = parentLayout() && parentLayout()->isMirrored();
+ if (mirrored)
+ return QMarginsF(rightMargin(), topMargin(), leftMargin(), bottomMargin());
+ else
+ return qMargins();
+ }
+
bool setChangesNotificationEnabled(bool enabled)
{
const bool old = m_changesNotificationEnabled;