aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick
diff options
context:
space:
mode:
authorVladimir Belyavsky <belyavskyv@gmail.com>2024-05-07 18:26:21 +0300
committerVladimir Belyavsky <belyavskyv@gmail.com>2024-05-08 19:04:02 +0300
commita5edb49c8fe8ae72aaaf7fed3a3f27b3d78ea9cd (patch)
tree5fefdfd284fafd6a60dd4e4fec482fa41667fc91 /src/quick
parent8764f4a72b45edc15894703ec576471f9e758ae0 (diff)
QQuickStyledTextImgTag: hold QQuickPixmap as smart pointer
Use QScopedPointer for QQuickPixmap member of QQuickStyledTextImgTag instead of holding it as a raw pointer. This way we make it a little safer to use and can clean up the code a bit. Change-Id: I98ebbe7892d4019ad305d8087bd195071fa868a4 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Diffstat (limited to 'src/quick')
-rw-r--r--src/quick/items/qquicktext.cpp11
-rw-r--r--src/quick/util/qquickstyledtext.cpp5
-rw-r--r--src/quick/util/qquickstyledtext_p.h8
3 files changed, 10 insertions, 14 deletions
diff --git a/src/quick/items/qquicktext.cpp b/src/quick/items/qquicktext.cpp
index 760325ce15..af3fe3d1d4 100644
--- a/src/quick/items/qquicktext.cpp
+++ b/src/quick/items/qquicktext.cpp
@@ -1287,7 +1287,7 @@ void QQuickTextPrivate::setLineGeometry(QTextLine &line, qreal lineWidth, qreal
if (!image->pix) {
const QQmlContext *context = qmlContext(q);
const QUrl url = context->resolvedUrl(q->baseUrl()).resolved(image->url);
- image->pix = new QQuickPixmap(context->engine(), url, QRect(), image->size * devicePixelRatio());
+ image->pix.reset(new QQuickPixmap(context->engine(), url, QRect(), image->size * devicePixelRatio()));
if (image->pix->isLoading()) {
image->pix->connectFinished(q, SLOT(imageDownloadFinished()));
@@ -1939,9 +1939,7 @@ void QQuickText::itemChange(ItemChange change, const ItemChangeData &value)
// check if we have scalable inline images with explicit size set, which should be reloaded
for (QQuickStyledTextImgTag *image : std::as_const(d->extra->visibleImgTags)) {
if (image->size.isValid() && QQuickPixmap::isScalableImageFormat(image->url)) {
- delete image->pix;
- image->pix = nullptr;
-
+ image->pix.reset();
needUpdateLayout = true;
}
}
@@ -2793,9 +2791,8 @@ QSGNode *QQuickText::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *data
if (d->extra.isAllocated()) {
for (QQuickStyledTextImgTag *img : std::as_const(d->extra->visibleImgTags)) {
- QQuickPixmap *pix = img->pix;
- if (pix && pix->isReady())
- node->addImage(QRectF(img->pos.x() + dx, img->pos.y() + dy, img->size.width(), img->size.height()), pix->image());
+ if (img->pix && img->pix->isReady())
+ node->addImage(QRectF(img->pos.x() + dx, img->pos.y() + dy, img->size.width(), img->size.height()), img->pix->image());
}
}
}
diff --git a/src/quick/util/qquickstyledtext.cpp b/src/quick/util/qquickstyledtext.cpp
index 527b8dbffe..a595dbcbc2 100644
--- a/src/quick/util/qquickstyledtext.cpp
+++ b/src/quick/util/qquickstyledtext.cpp
@@ -677,12 +677,11 @@ void QQuickStyledTextPrivate::parseImageAttributes(const QChar *&ch, const QStri
// to avoid a relayout later on.
QUrl url = baseUrl.resolved(image->url);
if (url.isLocalFile()) {
- image->pix = new QQuickPixmap(context->engine(), url, QRect(), image->size);
+ image->pix.reset(new QQuickPixmap(context->engine(), url, QRect(), image->size));
if (image->pix && image->pix->isReady()) {
image->size = image->pix->implicitSize();
} else {
- delete image->pix;
- image->pix = nullptr;
+ image->pix.reset();
}
}
}
diff --git a/src/quick/util/qquickstyledtext_p.h b/src/quick/util/qquickstyledtext_p.h
index af4b980c44..9f8ccf31e4 100644
--- a/src/quick/util/qquickstyledtext_p.h
+++ b/src/quick/util/qquickstyledtext_p.h
@@ -19,6 +19,7 @@
#include <QPointF>
#include <QList>
#include <QUrl>
+#include <QScopedPointer>
#include <QtQuick/private/qquickpixmap_p.h>
QT_BEGIN_NAMESPACE
@@ -31,9 +32,8 @@ class QQmlContext;
class Q_AUTOTEST_EXPORT QQuickStyledTextImgTag
{
public:
- QQuickStyledTextImgTag() { }
-
- ~QQuickStyledTextImgTag() { delete pix; }
+ QQuickStyledTextImgTag() = default;
+ ~QQuickStyledTextImgTag() = default;
enum Align {
Bottom,
@@ -47,7 +47,7 @@ public:
int position = 0;
qreal offset = 0.0; // this offset allows us to compensate for flooring reserved space
Align align = QQuickStyledTextImgTag::Bottom;
- QQuickPixmap *pix = nullptr;
+ QScopedPointer<QQuickPixmap> pix;
};
class Q_AUTOTEST_EXPORT QQuickStyledText