diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-01-08 10:12:58 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-01-08 10:47:57 +0100 |
commit | 233258f132134caaa3c4acf924b47d7e548865e7 (patch) | |
tree | 2afbcb2923f13b03fbb1dc15c1c5b3622842ef1e /src/webenginewidgets/api | |
parent | 6666e23ed6252c3ef53c5f17d4f28bfe63736e33 (diff) | |
parent | 9ef3a8263098c6a32db8b824aabf85587d1f1140 (diff) |
Merge remote-tracking branch 'origin/5.9' into 5.10
Conflicts:
.qmake.conf
src/core/api/qwebengineurlrequestjob.cpp
src/core/browser_context_adapter.cpp
src/core/renderer/user_resource_controller.cpp
src/core/web_engine_context.cpp
src/webenginewidgets/api/qwebenginepage.cpp
Change-Id: I5278e5e22e1776d42975fc94d70ff8ca4f81fb9a
Diffstat (limited to 'src/webenginewidgets/api')
-rw-r--r-- | src/webenginewidgets/api/qwebenginepage.cpp | 24 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebengineprofile.cpp | 9 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebengineprofile_p.h | 2 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebengineview.cpp | 15 |
4 files changed, 42 insertions, 8 deletions
diff --git a/src/webenginewidgets/api/qwebenginepage.cpp b/src/webenginewidgets/api/qwebenginepage.cpp index 976f72fa4..438e3ea24 100644 --- a/src/webenginewidgets/api/qwebenginepage.cpp +++ b/src/webenginewidgets/api/qwebenginepage.cpp @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2017 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the QtWebEngine module of the Qt Toolkit. @@ -138,7 +138,8 @@ static bool printPdfDataOnPrinter(const QByteArray& data, QPrinter& printer) QPainter painter; if (!painter.begin(&printer)) { - qWarning("Failure to print on printer %ls: Could not open printer for painting.", qUtf16Printable(printer.printerName())); + qWarning("Failure to print on printer %ls: Could not open printer for painting.", + qUtf16Printable(printer.printerName())); return false; } @@ -1610,12 +1611,21 @@ bool QWebEnginePagePrivate::isEnabled() const void QWebEnginePagePrivate::setToolTip(const QString &toolTipText) { - if (view) { - QString wrappedTip; - if (!toolTipText.isEmpty()) - wrappedTip = QLatin1String("<p>") % toolTipText.toHtmlEscaped().left(MaxTooltipLength) % QLatin1String("</p>"); - view->setToolTip(wrappedTip); + if (!view) + return; + + // Hide tooltip if shown. + if (toolTipText.isEmpty()) { + if (!view->toolTip().isEmpty()) + view->setToolTip(QString()); + + return; } + + // Update tooltip if text was changed. + QString wrappedTip = QLatin1String("<p>") % toolTipText.toHtmlEscaped().left(MaxTooltipLength) % QLatin1String("</p>"); + if (view->toolTip() != wrappedTip) + view->setToolTip(wrappedTip); } QMenu *QWebEnginePage::createStandardContextMenu() diff --git a/src/webenginewidgets/api/qwebengineprofile.cpp b/src/webenginewidgets/api/qwebengineprofile.cpp index c4de46b67..5a6c0e18a 100644 --- a/src/webenginewidgets/api/qwebengineprofile.cpp +++ b/src/webenginewidgets/api/qwebengineprofile.cpp @@ -155,11 +155,18 @@ QWebEngineBrowserContext::QWebEngineBrowserContext(QSharedPointer<QtWebEngineCor QWebEngineBrowserContext::~QWebEngineBrowserContext() { + if (m_profile) + shutdown(); +} + +void QWebEngineBrowserContext::shutdown() +{ Q_ASSERT(m_profile); // In the case the user sets this profile as the parent of the interceptor // it can be deleted before the browser-context still referencing it is. browserContextRef->setRequestInterceptor(nullptr); browserContextRef->removeClient(m_profile); + m_profile = 0; } QWebEngineProfilePrivate::QWebEngineProfilePrivate(QSharedPointer<QtWebEngineCore::BrowserContextAdapter> browserContext) @@ -181,6 +188,8 @@ QWebEngineProfilePrivate::~QWebEngineProfilePrivate() } m_ongoingDownloads.clear(); + if (m_browserContext) + m_browserContext->shutdown(); } QSharedPointer<QtWebEngineCore::BrowserContextAdapter> QWebEngineProfilePrivate::browserContext() const diff --git a/src/webenginewidgets/api/qwebengineprofile_p.h b/src/webenginewidgets/api/qwebengineprofile_p.h index 7f02307d3..07aad9176 100644 --- a/src/webenginewidgets/api/qwebengineprofile_p.h +++ b/src/webenginewidgets/api/qwebengineprofile_p.h @@ -76,6 +76,8 @@ public: QWebEngineBrowserContext(QSharedPointer<QtWebEngineCore::BrowserContextAdapter> browserContext, QWebEngineProfilePrivate *profile); ~QWebEngineBrowserContext(); + void shutdown(); + QSharedPointer<QtWebEngineCore::BrowserContextAdapter> browserContextRef; private: diff --git a/src/webenginewidgets/api/qwebengineview.cpp b/src/webenginewidgets/api/qwebengineview.cpp index 9b3f62217..7ea451fc5 100644 --- a/src/webenginewidgets/api/qwebengineview.cpp +++ b/src/webenginewidgets/api/qwebengineview.cpp @@ -50,8 +50,9 @@ #include <QAction> #include <QMenu> #include <QContextMenuEvent> -#include <QStackedLayout> #include <QPageLayout> +#include <QStackedLayout> +#include <QToolTip> QT_BEGIN_NAMESPACE @@ -327,6 +328,18 @@ bool QWebEngineView::event(QEvent *ev) ev->accept(); return true; } + + // Override QWidget's default ToolTip handler since it doesn't hide tooltip on empty text. + if (ev->type() == QEvent::ToolTip) { + if (!toolTip().isEmpty()) + QToolTip::showText(static_cast<QHelpEvent *>(ev)->globalPos(), toolTip(), this, QRect(), toolTipDuration()); + else + QToolTip::hideText(); + + ev->accept(); + return true; + } + return QWidget::event(ev); } |