qt: Fix richtext detection hang issue on very old Qt versions

Alternative implementation. Thanks to @awoland for the original.
Fixes #3486.
This commit is contained in:
Wladimir J. van der Laan 2014-01-23 12:31:54 +01:00
parent 8b2cf12b53
commit 17b409b2e6

View file

@ -361,11 +361,11 @@ bool ToolTipToRichTextFilter::eventFilter(QObject *obj, QEvent *evt)
{ {
QWidget *widget = static_cast<QWidget*>(obj); QWidget *widget = static_cast<QWidget*>(obj);
QString tooltip = widget->toolTip(); QString tooltip = widget->toolTip();
if(tooltip.size() > size_threshold && !tooltip.startsWith("<qt/>") && !Qt::mightBeRichText(tooltip)) if(tooltip.size() > size_threshold && !tooltip.startsWith("<qt") && !Qt::mightBeRichText(tooltip))
{ {
// Prefix <qt/> to make sure Qt detects this as rich text // Envelop with <qt></qt> to make sure Qt detects this as rich text
// Escape the current message as HTML and replace \n by <br> // Escape the current message as HTML and replace \n by <br>
tooltip = "<qt/>" + HtmlEscape(tooltip, true); tooltip = "<qt>" + HtmlEscape(tooltip, true) + "</qt>";
widget->setToolTip(tooltip); widget->setToolTip(tooltip);
return true; return true;
} }