summaryrefslogtreecommitdiffstats
path: root/src/widgets
diff options
context:
space:
mode:
authorKai Koehne <kai.koehne@qt.io>2018-12-14 16:17:22 +0100
committerKai Koehne <kai.koehne@qt.io>2019-01-04 11:25:47 +0000
commit17fe5fc128541553b1eda719d47221763959f8b6 (patch)
treebb36a37f3e4a0d4776c06c71474eed97cf9ad62c /src/widgets
parent66c9161d055ad221d1a0c53d35e00484027cf775 (diff)
Restore behavior for QToolTip not wrapping by default
This partially reverts 7a1d77b6e4ec38ae8fc17, which caused regressions e.g. in Qt Creator. The behavior of QToolTip for wrapping has been always special in that wordWrap was enabled as soon as some HTML tags were detected, while plain text was not wrapped. This is arguably bad API, but by now a lot of applications depend on this exact behavior, so I don't think it's worth to change this anymore. What can be kept though is the check for overlong tooltips that do not fit on the screen. In this case wrapping makes sense. [ChangeLog][QtWidgets] Reverted a Qt 5.12.0 behavior change in QToolTip that made plain tooltip text be wrapped automatically. Fixes: QTBUG-72568 Change-Id: I6fa3e455f09cffaeb8ad1cdc6e81d71ae344dd34 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Diffstat (limited to 'src/widgets')
-rw-r--r--src/widgets/kernel/qtooltip.cpp22
1 files changed, 9 insertions, 13 deletions
diff --git a/src/widgets/kernel/qtooltip.cpp b/src/widgets/kernel/qtooltip.cpp
index 2e6575c163..b9d8758fe0 100644
--- a/src/widgets/kernel/qtooltip.cpp
+++ b/src/widgets/kernel/qtooltip.cpp
@@ -214,7 +214,6 @@ void QTipLabel::reuseTip(const QString &text, int msecDisplayTime, const QPoint
}
#endif
- setWordWrap(true);
setText(text);
updateSize(pos);
restartExpireTimer(msecDisplayTime);
@@ -227,19 +226,16 @@ void QTipLabel::updateSize(const QPoint &pos)
// Make it look good with the default ToolTip font on Mac, which has a small descent.
if (fm.descent() == 2 && fm.ascent() >= 11)
++extra.rheight();
+ setWordWrap(Qt::mightBeRichText(text()));
QSize sh = sizeHint();
- if (wordWrap()) {
- QScreen *screen = QGuiApplication::screenAt(pos);
- if (!screen)
- screen = QGuiApplication::primaryScreen();
- if (screen) {
- const qreal screenWidth = screen->geometry().width();
- if (sh.width() > screenWidth) {
- // Try to use widely accepted 75chars max length or 80% of the screen width else.
- // See https://en.wikipedia.org/wiki/Line_length
- sh.setWidth(qMin(fm.averageCharWidth() * 75, static_cast<int>(screenWidth * .8)));
- sh.setHeight(heightForWidth(sh.width()));
- }
+ QScreen *screen = QGuiApplication::screenAt(pos);
+ if (!screen)
+ screen = QGuiApplication::primaryScreen();
+ if (screen) {
+ const qreal screenWidth = screen->geometry().width();
+ if (!wordWrap() && sh.width() > screenWidth) {
+ setWordWrap(true);
+ sh = sizeHint();
}
}
resize(sh + extra);