summaryrefslogtreecommitdiffstats
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
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>
-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);
}