diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2019-05-24 21:41:17 +0200 |
---|---|---|
committer | Marc Mutz <marc.mutz@kdab.com> | 2019-05-27 15:51:55 +0200 |
commit | ca0c9f82cbf7c8c37acdcbdfdc3fa0c5fc138059 (patch) | |
tree | 091da154ca185af5a49296ef69a8701974c238cc /src/widgets/graphicsview/qgraphicswidget_p.cpp | |
parent | 0eb26c144346dcb12008e5b3e9441073f09668a8 (diff) |
QGraphicsWidget: overload two margins-setters with actual QMarginsF overloads
Replace manual memory management with unique_ptr and manual
re-implementations of QMarginsF with The Real Thing™.
The only noticeable difference should be that the checks for 0 now use
qFuzzyCompare() (by way of QMarginsF::isNull() and its operator==).
[ChangeLog][QtWidgets][QGraphicsWidget] Added QMarginsF overloads of
setContentsMargins() and setWindowFrameMargins().
Change-Id: I6b3bb87015fa52fdde245b7528cca4b8f9ce41e1
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Diffstat (limited to 'src/widgets/graphicsview/qgraphicswidget_p.cpp')
-rw-r--r-- | src/widgets/graphicsview/qgraphicswidget_p.cpp | 26 |
1 files changed, 10 insertions, 16 deletions
diff --git a/src/widgets/graphicsview/qgraphicswidget_p.cpp b/src/widgets/graphicsview/qgraphicswidget_p.cpp index 1514fca456..ce027c1319 100644 --- a/src/widgets/graphicsview/qgraphicswidget_p.cpp +++ b/src/widgets/graphicsview/qgraphicswidget_p.cpp @@ -51,6 +51,8 @@ #include <QtWidgets/QStyleOptionTitleBar> #include <QtWidgets/QGraphicsSceneMouseEvent> +#include <private/qmemory_p.h> + QT_BEGIN_NAMESPACE void QGraphicsWidgetPrivate::init(QGraphicsItem *parentItem, Qt::WindowFlags wFlags) @@ -109,8 +111,6 @@ QGraphicsWidgetPrivate::QGraphicsWidgetPrivate() QGraphicsWidgetPrivate::~QGraphicsWidgetPrivate() { // Remove any lazily allocated data - delete[] margins; - delete[] windowFrameMargins; delete windowData; } @@ -122,11 +122,8 @@ QGraphicsWidgetPrivate::~QGraphicsWidgetPrivate() */ void QGraphicsWidgetPrivate::ensureMargins() const { - if (!margins) { - margins = new qreal[4]; - for (int i = 0; i < 4; ++i) - margins[i] = 0; - } + if (!margins) + margins = qt_make_unique<QMarginsF>(); } /*! @@ -137,11 +134,8 @@ void QGraphicsWidgetPrivate::ensureMargins() const */ void QGraphicsWidgetPrivate::ensureWindowFrameMargins() const { - if (!windowFrameMargins) { - windowFrameMargins = new qreal[4]; - for (int i = 0; i < 4; ++i) - windowFrameMargins[i] = 0; - } + if (!windowFrameMargins) + windowFrameMargins = qt_make_unique<QMarginsF>(); } /*! @@ -372,8 +366,8 @@ void QGraphicsWidgetPrivate::windowFrameMouseReleaseEvent(QGraphicsSceneMouseEve bar.rect.setHeight(q->style()->pixelMetric(QStyle::PM_TitleBarHeight, &bar)); QPointF pos = event->pos(); if (windowFrameMargins) { - pos.rx() += windowFrameMargins[Left]; - pos.ry() += windowFrameMargins[Top]; + pos.rx() += windowFrameMargins->left(); + pos.ry() += windowFrameMargins->top(); } bar.subControls = QStyle::SC_TitleBarCloseButton; if (q->style()->subControlRect(QStyle::CC_TitleBar, &bar, @@ -669,8 +663,8 @@ void QGraphicsWidgetPrivate::windowFrameHoverMoveEvent(QGraphicsSceneHoverEvent QStyleOptionTitleBar bar; // make sure that the coordinates (rect and pos) we send to the style are positive. if (windowFrameMargins) { - pos.rx() += windowFrameMargins[Left]; - pos.ry() += windowFrameMargins[Top]; + pos.rx() += windowFrameMargins->left(); + pos.ry() += windowFrameMargins->top(); } initStyleOptionTitleBar(&bar); bar.rect = q->windowFrameRect().toRect(); |