Allow Qt to wrap long tooltips (fixes #1063)

Implemented without having to touch any translation: by listening for QEvent::ToolTipChange events, then rewriting the tooltips to prefix `<qt/>` if it is not yet rich text.
This commit is contained in:
Wladimir J. van der Laan
2012-04-13 17:10:50 +02:00
parent 4c9183e8bb
commit 3793fa09ff
5 changed files with 57 additions and 3 deletions

View File

@@ -214,5 +214,29 @@ bool isObscured(QWidget *w)
&& checkPoint(QPoint(w->width()/2, w->height()/2), w));
}
ToolTipToRichTextFilter::ToolTipToRichTextFilter(int size_threshold, QObject *parent):
size_threshold(size_threshold), QObject(parent)
{
}
bool ToolTipToRichTextFilter::eventFilter(QObject *obj, QEvent *evt)
{
if(evt->type() == QEvent::ToolTipChange)
{
QWidget *widget = static_cast<QWidget*>(obj);
QString tooltip = widget->toolTip();
if(!Qt::mightBeRichText(tooltip) && tooltip.size() > size_threshold)
{
// Prefix <qt/> to make sure Qt detects this as rich text
// Escape the current message as HTML and replace \n by <br>
tooltip = "<qt/>" + HtmlEscape(tooltip, true);
widget->setToolTip(tooltip);
return true;
}
}
return QObject::eventFilter(obj, evt);
}
} // namespace GUIUtil