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:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user