diff --git a/ui/qt/label_stack.cpp b/ui/qt/label_stack.cpp index c7e27532f9..5db56945e0 100644 --- a/ui/qt/label_stack.cpp +++ b/ui/qt/label_stack.cpp @@ -24,6 +24,7 @@ #include #include #include +#include #include "tango_colors.h" @@ -143,14 +144,18 @@ void LabelStack::paintEvent(QPaintEvent *event) return; } - // Other "elided label" examples draw the label text by hand, - // reimplementing QLabel::paintEvent. Disabling updates and letting - // QLabel do the work for us seems to work, however. + QFrame::paintEvent(event); + QString elided_text = fontMetrics().elidedText(text(), Qt::ElideMiddle, width()); - QString full_text = text(); - setText(elided_text); - QLabel::paintEvent(event); - setText(full_text); + QPainter painter(this); + QRect contents_rect = contentsRect(); + QStyleOption opt; + + contents_rect.adjust(margin(), margin(), -margin(), -margin()); + opt.initFrom(this); + + style()->drawItemText(&painter, contents_rect, alignment(), opt.palette, + isEnabled(), elided_text, foregroundRole()); } void LabelStack::popText(int ctx) {