X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Ftopicbutton.cpp;h=ee91ad59e57d04e11756df8dd4087546470288fd;hp=6ece9709935d5d3f3dfadcfa25f6e1eb44326c3b;hb=87828aeae2510b29619aa79a3bd76885e2c1ebd4;hpb=a23256347cc47605dd0660127052846427bc998d diff --git a/src/qtui/topicbutton.cpp b/src/qtui/topicbutton.cpp index 6ece9709..ee91ad59 100644 --- a/src/qtui/topicbutton.cpp +++ b/src/qtui/topicbutton.cpp @@ -33,8 +33,7 @@ #include "message.h" TopicButton::TopicButton(QWidget *parent) - : QAbstractButton(parent), - _sizeHint(QSize()) + : QAbstractButton(parent) { } @@ -42,29 +41,27 @@ void TopicButton::paintEvent(QPaintEvent *event) { Q_UNUSED(event); QPainter painter(this); - QFontMetrics metrics(qApp->font()); + painter.setBackgroundMode(Qt::OpaqueMode); - QPoint topLeft = rect().topLeft(); - int height = sizeHint().height(); - int width = 0; - QRect drawRect; + QRect drawRect = rect(); + QRect brect; QString textPart; foreach(QTextLayout::FormatRange fr, styledText.formats) { textPart = styledText.text.mid(fr.start, fr.length); - width = metrics.width(textPart); - drawRect = QRect(topLeft, QPoint(topLeft.x() + width, topLeft.y() + height)); - // qDebug() << drawRect << textPart << width << fr.format.background(); + painter.setFont(fr.format.font()); painter.setPen(QPen(fr.format.foreground(), 0)); - painter.setBackground(fr.format.background()); // no clue why this doesnt work properly o_O - painter.drawText(drawRect, Qt::AlignLeft|Qt::TextSingleLine, textPart); - topLeft.setX(topLeft.x() + width); + painter.setBackground(fr.format.background()); + painter.drawText(drawRect, Qt::AlignLeft|Qt::TextSingleLine, textPart, &brect); + drawRect.setLeft(brect.right()); } } void TopicButton::setAndStyleText(const QString &text) { styledText = QtUi::style()->styleString(Message::mircToInternal(text)); setText(styledText.text); - - QFontMetrics metrics(qApp->font()); - _sizeHint = metrics.boundingRect(styledText.text).size(); + int height = 1; + foreach(QTextLayout::FormatRange fr, styledText.formats) { + height = qMax(height, QFontMetrics(fr.format.font()).height()); + } + setFixedHeight(height); }