diff options
author | Tamas Zakor <ztamas@inf.u-szeged.hu> | 2019-11-29 14:43:24 +0100 |
---|---|---|
committer | Tamas Zakor <ztamas@inf.u-szeged.hu> | 2019-12-18 14:54:13 +0000 |
commit | 17ea5b6534d6221e50cdd37dc773e03b5d34665e (patch) | |
tree | 559ca387ef7928797bdb5e1127ed31a1d668aa2a /src/webenginewidgets/api | |
parent | 12874d951f917d814efd582742b32d9d2884f9e4 (diff) |
Fix Q(Quick)WebEngineDownloadItem::setDownloadDirectory()
Keep the custom file name if the calling order of setDownloadDirectory()
and setDownloadFileName() changes.
Also do not emit patchChanged signal twice if setDownloadDirectory()
changes the uniquifier of the file name.
Add TempDir for qml auto tests what uses QTemporaryDir() to create
temporary directory for downloads.
See https://cgit.kde.org/messagelib.git/commit/?id=2c113dcb155b11bf2c0af3c85544962485784b26
for details.
Fixes: QTBUG-80566
Change-Id: Ia76f263558eaf55cb297700407948523788c6229
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src/webenginewidgets/api')
-rw-r--r-- | src/webenginewidgets/api/qwebenginedownloaditem.cpp | 14 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebenginedownloaditem_p.h | 1 |
2 files changed, 10 insertions, 5 deletions
diff --git a/src/webenginewidgets/api/qwebenginedownloaditem.cpp b/src/webenginewidgets/api/qwebenginedownloaditem.cpp index fd7d90704..7366dbf59 100644 --- a/src/webenginewidgets/api/qwebenginedownloaditem.cpp +++ b/src/webenginewidgets/api/qwebenginedownloaditem.cpp @@ -170,6 +170,7 @@ QWebEngineDownloadItemPrivate::QWebEngineDownloadItemPrivate(QWebEngineProfilePr , interruptReason(QWebEngineDownloadItem::NoReason) , downloadUrl(url) , downloadPaused(false) + , isCustomFileName(false) , totalBytes(-1) , receivedBytes(0) , page(0) @@ -594,14 +595,15 @@ void QWebEngineDownloadItem::setDownloadDirectory(const QString &directory) if (d->downloadState != QWebEngineDownloadItem::DownloadRequested) { qWarning("Setting the download directory is not allowed after the download has been accepted."); return; - } + } if (!directory.isEmpty() && d->downloadDirectory != directory) d->downloadDirectory = directory; - d->downloadFileName = QFileInfo(d->profile->profileAdapter()->determineDownloadPath(d->downloadDirectory, - d->suggestedFileName, - d->startTime)).fileName(); + if (!d->isCustomFileName) + d->downloadFileName = QFileInfo(d->profile->profileAdapter()->determineDownloadPath(d->downloadDirectory, + d->suggestedFileName, + d->startTime)).fileName(); } /*! @@ -634,8 +636,10 @@ void QWebEngineDownloadItem::setDownloadFileName(const QString &fileName) return; } - if (!fileName.isEmpty()) + if (!fileName.isEmpty()) { d->downloadFileName = fileName; + d->isCustomFileName = true; + } } /*! diff --git a/src/webenginewidgets/api/qwebenginedownloaditem_p.h b/src/webenginewidgets/api/qwebenginedownloaditem_p.h index 034684a00..04c6fadcc 100644 --- a/src/webenginewidgets/api/qwebenginedownloaditem_p.h +++ b/src/webenginewidgets/api/qwebenginedownloaditem_p.h @@ -82,6 +82,7 @@ public: QString suggestedFileName; QString downloadDirectory; QString downloadFileName; + bool isCustomFileName; qint64 totalBytes; qint64 receivedBytes; |