diff options
author | Michael BrĂ¼ning <michael.bruning@qt.io> | 2020-01-17 18:09:51 +0100 |
---|---|---|
committer | Michael BrĂ¼ning <michael.bruning@qt.io> | 2020-01-17 19:16:39 +0100 |
commit | feb24330fa45bdc484e4cb4ab8cb17861c3f2b06 (patch) | |
tree | 79db9f81fd0dacb5db7fb04a517dbdbb94bde023 /src/webengine | |
parent | faac668bc3b2b48943886f07e259d9ad39f14322 (diff) | |
parent | 956a2d2b099fabd06c8277da108ebb9056dc6d6e (diff) |
Merge "Merge remote-tracking branch 'origin/5.14.1' into 5.15"
Diffstat (limited to 'src/webengine')
-rw-r--r-- | src/webengine/api/qquickwebenginedownloaditem.cpp | 26 | ||||
-rw-r--r-- | src/webengine/api/qquickwebenginedownloaditem_p.h | 1 | ||||
-rw-r--r-- | src/webengine/api/qquickwebenginedownloaditem_p_p.h | 1 | ||||
-rw-r--r-- | src/webengine/api/qquickwebengineview.cpp | 31 | ||||
-rw-r--r-- | src/webengine/api/qquickwebengineview_p_p.h | 2 |
5 files changed, 36 insertions, 25 deletions
diff --git a/src/webengine/api/qquickwebenginedownloaditem.cpp b/src/webengine/api/qquickwebenginedownloaditem.cpp index 6abd89910..767ada58f 100644 --- a/src/webengine/api/qquickwebenginedownloaditem.cpp +++ b/src/webengine/api/qquickwebenginedownloaditem.cpp @@ -112,6 +112,7 @@ QQuickWebEngineDownloadItemPrivate::QQuickWebEngineDownloadItemPrivate(QQuickWeb , downloadPaused(false) , view(nullptr) , downloadUrl(url) + , isCustomFileName(false) { } @@ -511,25 +512,31 @@ void QQuickWebEngineDownloadItem::setDownloadDirectory(const QString &directory) return; } + bool isPathChanged = false; QString changeDirectory = d->downloadDirectory; if (!directory.isEmpty() && changeDirectory != directory) { changeDirectory = directory; if (d->downloadDirectory != changeDirectory) { d->downloadDirectory = changeDirectory; - Q_EMIT pathChanged(); Q_EMIT downloadDirectoryChanged(); + isPathChanged = true; } - QString newFileName = QFileInfo(d->profile->d_ptr->profileAdapter()->determineDownloadPath(d->downloadDirectory, - d->suggestedFileName, - d->startTime)).fileName(); - if (d->downloadFileName != newFileName) { - d->downloadFileName = newFileName; - Q_EMIT pathChanged(); - Q_EMIT downloadFileNameChanged(); + if (!d->isCustomFileName) { + QString newFileName = QFileInfo(d->profile->d_ptr->profileAdapter()->determineDownloadPath(d->downloadDirectory, + d->suggestedFileName, + d->startTime)).fileName(); + if (d->downloadFileName != newFileName) { + d->downloadFileName = newFileName; + Q_EMIT downloadFileNameChanged(); + isPathChanged = true; + } } } + + if (isPathChanged) + Q_EMIT pathChanged(); } /*! @@ -561,8 +568,9 @@ void QQuickWebEngineDownloadItem::setDownloadFileName(const QString &fileName) if (d->downloadFileName != fileName && !fileName.isEmpty()) { d->downloadFileName = fileName; - Q_EMIT pathChanged(); + d->isCustomFileName = true; Q_EMIT downloadFileNameChanged(); + Q_EMIT pathChanged(); } } diff --git a/src/webengine/api/qquickwebenginedownloaditem_p.h b/src/webengine/api/qquickwebenginedownloaditem_p.h index beb359622..e1b1b9040 100644 --- a/src/webengine/api/qquickwebenginedownloaditem_p.h +++ b/src/webengine/api/qquickwebenginedownloaditem_p.h @@ -169,6 +169,7 @@ public: void setDownloadDirectory(const QString &directory); QString downloadFileName() const; void setDownloadFileName(const QString &fileName); + bool isCustomFileName; Q_SIGNALS: void stateChanged(); diff --git a/src/webengine/api/qquickwebenginedownloaditem_p_p.h b/src/webengine/api/qquickwebenginedownloaditem_p_p.h index 1be6434ec..acd7fe806 100644 --- a/src/webengine/api/qquickwebenginedownloaditem_p_p.h +++ b/src/webengine/api/qquickwebenginedownloaditem_p_p.h @@ -87,6 +87,7 @@ public: QString suggestedFileName; QString downloadDirectory; QString downloadFileName; + bool isCustomFileName; void update(const QtWebEngineCore::ProfileAdapterClient::DownloadItemInfo &info); void updateState(QQuickWebEngineDownloadItem::DownloadState newState); diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp index b05bbfdbc..83ada3c11 100644 --- a/src/webengine/api/qquickwebengineview.cpp +++ b/src/webengine/api/qquickwebengineview.cpp @@ -369,11 +369,14 @@ void QQuickWebEngineViewPrivate::titleChanged(const QString &title) Q_EMIT q->titleChanged(); } -void QQuickWebEngineViewPrivate::urlChanged(const QUrl &url) +void QQuickWebEngineViewPrivate::urlChanged() { Q_Q(QQuickWebEngineView); - Q_UNUSED(url); - Q_EMIT q->urlChanged(); + QUrl url = adapter->activeUrl(); + if (m_url != url) { + m_url = url; + Q_EMIT q->urlChanged(); + } } void QQuickWebEngineViewPrivate::iconChanged(const QUrl &url) @@ -885,7 +888,7 @@ void QQuickWebEngineViewPrivate::initializationFinished() emit q->titleChanged(); emit q->urlChanged(); emit q->iconChanged(); - QQuickWebEngineLoadRequest loadRequest(adapter->activeUrl(), QQuickWebEngineView::LoadSucceededStatus); + QQuickWebEngineLoadRequest loadRequest(m_url, QQuickWebEngineView::LoadSucceededStatus); emit q->loadingChanged(&loadRequest); emit q->loadProgressChanged(); @@ -1017,9 +1020,6 @@ void QQuickWebEngineViewPrivate::updateEditActions() QUrl QQuickWebEngineView::url() const { Q_D(const QQuickWebEngineView); - if (d->adapter->isInitialized()) - return d->adapter->activeUrl(); - else return d->m_url; } @@ -1029,13 +1029,15 @@ void QQuickWebEngineView::setUrl(const QUrl& url) if (url.isEmpty()) return; + if (d->m_url != url) { + d->m_url = url; + d->m_html.clear(); + emit urlChanged(); + } + if (d->adapter->isInitialized()) { d->adapter->load(url); - return; } - - d->m_url = url; - d->m_html.clear(); } QUrl QQuickWebEngineView::icon() const @@ -1147,14 +1149,13 @@ void QQuickWebEngineViewPrivate::updateAdapter() { // When the profile changes we need to create a new WebContentAdapter and reload the active URL. bool wasInitialized = adapter->isInitialized(); - QUrl activeUrl = adapter->activeUrl(); adapter = QSharedPointer<WebContentsAdapter>::create(); adapter->setClient(this); if (wasInitialized) { if (!m_html.isEmpty()) - adapter->setContent(m_html.toUtf8(), defaultMimeType, activeUrl); - else if (activeUrl.isValid()) - adapter->load(activeUrl); + adapter->setContent(m_html.toUtf8(), defaultMimeType, m_url); + else if (m_url.isValid()) + adapter->load(m_url); else adapter->loadDefault(); } diff --git a/src/webengine/api/qquickwebengineview_p_p.h b/src/webengine/api/qquickwebengineview_p_p.h index df6843ac3..a2ae86f91 100644 --- a/src/webengine/api/qquickwebengineview_p_p.h +++ b/src/webengine/api/qquickwebengineview_p_p.h @@ -106,7 +106,7 @@ public: void recommendedStateChanged(LifecycleState state) override; void visibleChanged(bool visible) override; void titleChanged(const QString&) override; - void urlChanged(const QUrl&) override; + void urlChanged() override; void iconChanged(const QUrl&) override; void loadProgressChanged(int progress) override; void didUpdateTargetURL(const QUrl&) override; |