summaryrefslogtreecommitdiffstats
path: root/src/webenginewidgets/api
diff options
context:
space:
mode:
authorPeter Varga <pvarga@inf.u-szeged.hu>2021-11-03 14:46:27 +0100
committerPeter Varga <pvarga@inf.u-szeged.hu>2021-11-05 12:49:30 +0100
commit1a3a932926e4135cb055c02d89117b0a652a374d (patch)
treee82b5e98bcb55dfc47a8b26ca915efacb39d5911 /src/webenginewidgets/api
parentd554dde77b60e33bd328b7cb7b5f0b5afa2cffe1 (diff)
Do not cancel custom tooltips by QWebEngineView custom tooltip handler
Tooltips should disappear when chromium requests it and it is done by an explicit call of QToolTip::hideText() (see QTBUG-64933). This, however would also hide a custom "global" tooltip because the custom tooltip event notifies QWebEngineView to remove its own tooltip to avoid more than one in a window. The QWebEngineView's tooltip handler was override and it resulted custom tooltips to hide themselves. As a fix, remove the custom tooltip handler from QWebEngineView and hide tooltips only if requested by Chromium. Fixes: QTBUG-97897 Pick-to: 6.2 Change-Id: I976e49218ec975b10e2f155096f6aec124270fdc Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src/webenginewidgets/api')
-rw-r--r--src/webenginewidgets/api/qwebengineview.cpp24
1 files changed, 12 insertions, 12 deletions
diff --git a/src/webenginewidgets/api/qwebengineview.cpp b/src/webenginewidgets/api/qwebengineview.cpp
index 6414ac050..522beb892 100644
--- a/src/webenginewidgets/api/qwebengineview.cpp
+++ b/src/webenginewidgets/api/qwebengineview.cpp
@@ -494,7 +494,18 @@ QWebEnginePage *QWebEngineViewPrivate::createPageForWindow(QWebEnginePage::WebWi
void QWebEngineViewPrivate::setToolTip(const QString &toolTipText)
{
Q_Q(QWebEngineView);
- q->setToolTip(toolTipText);
+ if (toolTipText.isEmpty()) {
+ // Avoid duplicate events.
+ if (!q->toolTip().isEmpty())
+ q->setToolTip(QString());
+ // Force to hide tooltip because QWidget's default handler
+ // doesn't hide on empty text.
+ if (!QToolTip::text().isEmpty())
+ QToolTip::hideText();
+ } else if (toolTipText != q->toolTip()) {
+ q->setToolTip(toolTipText);
+ }
+
}
bool QWebEngineViewPrivate::isEnabled() const
@@ -817,17 +828,6 @@ bool QWebEngineView::event(QEvent *ev)
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);
}