aboutsummaryrefslogtreecommitdiffstats
path: root/src/imports
diff options
context:
space:
mode:
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;