From 04913fefc9f628407fbc432fc903bbb1559de42e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Arve=20S=C3=A6ther?= Date: Mon, 26 Oct 2020 13:50:08 +0100 Subject: Native style: Fix bug in layoutMargins() It should return margin of 0 if style()->subElementRect(XXXLayoutItem) returned an invalid rect. This means that we cannot rely on m_styleItemGeometry.layoutRect blindly. Change-Id: If6b5a40481c8199a63f3446abc9e7dd1c670d181 Reviewed-by: Richard Moe Gustavsen --- src/imports/nativestyle/items/qquickstyleitem.cpp | 8 ++++++-- src/imports/nativestyle/items/qquickstyleitem.h | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/imports/nativestyle/items/qquickstyleitem.cpp b/src/imports/nativestyle/items/qquickstyleitem.cpp index 5899e3ce..e59439ab 100644 --- a/src/imports/nativestyle/items/qquickstyleitem.cpp +++ b/src/imports/nativestyle/items/qquickstyleitem.cpp @@ -433,8 +433,12 @@ QQuickStyleMargins QQuickStyleItem::layoutMargins() const // than the control(frame) itself, to e.g make room for shadow effects // or focus rects/glow. And this will differ from control to control. The // layoutRect will then inform where the frame of the control is. - const QRect outerRect(QPoint(0, 0), m_styleItemGeometry.implicitSize); - return QQuickStyleMargins(outerRect, m_styleItemGeometry.layoutRect); + QQuickStyleMargins margins; + if (m_styleItemGeometry.layoutRect.isValid()) { + const QRect outerRect(QPoint(0, 0), m_styleItemGeometry.implicitSize); + margins = QQuickStyleMargins(outerRect, m_styleItemGeometry.layoutRect); + } + return margins; } QSize QQuickStyleItem::minimumSize() const diff --git a/src/imports/nativestyle/items/qquickstyleitem.h b/src/imports/nativestyle/items/qquickstyleitem.h index 2c8c9920..4e4180c1 100644 --- a/src/imports/nativestyle/items/qquickstyleitem.h +++ b/src/imports/nativestyle/items/qquickstyleitem.h @@ -144,7 +144,7 @@ struct StyleItemGeometry QSize minimumSize; QSize implicitSize; QRect contentRect; - QRect layoutRect; + QRect layoutRect; //If invalid, there are no layout margins! QMargins ninePatchMargins; qreal focusFrameRadius; }; -- cgit v1.2.3