summaryrefslogtreecommitdiffstats
path: root/src/gui/text
diff options
context:
space:
mode:
authorMorten Johan Sørvig <morten.sorvig@qt.io>2020-06-16 15:46:16 +0200
committerMorten Johan Sørvig <morten.sorvig@qt.io>2020-11-06 09:16:30 +0000
commit52ce0c177e80c2d5b70b38d429abb3689b3da51e (patch)
tree3bb7bac43440b2f1e08c85a5d353a1157143c5b9 /src/gui/text
parent83982ac1c5f2222e762944279fe7d126ac62a026 (diff)
Set the url to have the AtNx filename if one is found
There’s no need to convert the file name/path to QUrl, and then back again to QString before calling qt_findAtNxFile(). Call qt_findAtNxFile first, and then convert to QUrl. This makes sure the url-name and string-name stays in sync. Change-Id: I8b8939eabbdaff473945ebe31faafd408e9c4295 Pick-to: 5.15 Fixes: QTBUG-60793 Reviewed-by: Andy Shaw <andy.shaw@qt.io>
Diffstat (limited to 'src/gui/text')
-rw-r--r--src/gui/text/qtextimagehandler.cpp48
1 files changed, 13 insertions, 35 deletions
diff --git a/src/gui/text/qtextimagehandler.cpp b/src/gui/text/qtextimagehandler.cpp
index 27112d3000..290aa256cb 100644
--- a/src/gui/text/qtextimagehandler.cpp
+++ b/src/gui/text/qtextimagehandler.cpp
@@ -53,40 +53,21 @@ QT_BEGIN_NAMESPACE
extern QString qt_findAtNxFile(const QString &baseFileName, qreal targetDevicePixelRatio,
qreal *sourceDevicePixelRatio);
-static QString resolveFileName(QString fileName, QUrl *url, qreal targetDevicePixelRatio,
- qreal *sourceDevicePixelRatio)
-{
- // We might use the fileName for loading if url loading fails
- // try to make sure it is a valid file path.
- // Also, QFile{Info}::exists works only on filepaths (not urls)
-
- if (url->isValid()) {
- if (url->scheme() == QLatin1String("qrc")) {
- fileName = fileName.right(fileName.length() - 3);
- }
- else if (url->scheme() == QLatin1String("file")) {
- fileName = url->toLocalFile();
- }
- }
- if (targetDevicePixelRatio <= 1.0)
- return fileName;
-
- // try to find a Nx version
- return qt_findAtNxFile(fileName, targetDevicePixelRatio, sourceDevicePixelRatio);
+static inline QUrl fromLocalfileOrResources(QString path)
+{
+ if (path.startsWith(QLatin1String(":/"))) // auto-detect resources and convert them to url
+ path.prepend(QLatin1String("qrc"));
+ return QUrl(path);
}
-
static QPixmap getPixmap(QTextDocument *doc, const QTextImageFormat &format, const qreal devicePixelRatio = 1.0)
{
- QPixmap pm;
-
- QString name = format.name();
- if (name.startsWith(QLatin1String(":/"))) // auto-detect resources and convert them to url
- name.prepend(QLatin1String("qrc"));
- QUrl url = QUrl(name);
qreal sourcePixelRatio = 1.0;
- name = resolveFileName(name, &url, devicePixelRatio, &sourcePixelRatio);
+ const QString name = qt_findAtNxFile(format.name(), devicePixelRatio, &sourcePixelRatio);
+ const QUrl url = fromLocalfileOrResources(name);
+
+ QPixmap pm;
const QVariant data = doc->resource(QTextDocument::ImageResource, url);
if (data.userType() == QMetaType::QPixmap || data.userType() == QMetaType::QImage) {
pm = qvariant_cast<QPixmap>(data);
@@ -153,14 +134,11 @@ static QSize getPixmapSize(QTextDocument *doc, const QTextImageFormat &format)
static QImage getImage(QTextDocument *doc, const QTextImageFormat &format, const qreal devicePixelRatio = 1.0)
{
- QImage image;
-
- QString name = format.name();
- if (name.startsWith(QLatin1String(":/"))) // auto-detect resources
- name.prepend(QLatin1String("qrc"));
- QUrl url = QUrl(name);
qreal sourcePixelRatio = 1.0;
- name = resolveFileName(name, &url, devicePixelRatio, &sourcePixelRatio);
+ const QString name = qt_findAtNxFile(format.name(), devicePixelRatio, &sourcePixelRatio);
+ const QUrl url = fromLocalfileOrResources(name);
+
+ QImage image;
const QVariant data = doc->resource(QTextDocument::ImageResource, url);
if (data.userType() == QMetaType::QImage) {
image = qvariant_cast<QImage>(data);