X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fstyledlabel.cpp;h=38250ea27fd18308855bb29e05ac40616ef6b22d;hp=372b9bbef53a31e94711db419b4c52c79cda2482;hb=d316067d1daf6c7ea790ca9ac5e1ff947fe011ce;hpb=6ce1966d5d3070ad461a976a2bee7cc28e8b9149 diff --git a/src/uisupport/styledlabel.cpp b/src/uisupport/styledlabel.cpp index 372b9bbe..38250ea2 100644 --- a/src/uisupport/styledlabel.cpp +++ b/src/uisupport/styledlabel.cpp @@ -30,7 +30,8 @@ StyledLabel::StyledLabel(QWidget *parent) : QFrame(parent), _wrapMode(QTextOption::NoWrap), _alignment(Qt::AlignVCenter|Qt::AlignLeft), - _toolTipEnabled(true) + _toolTipEnabled(true), + _resizeMode(NoResize) { setMouseTracking(true); @@ -40,6 +41,12 @@ StyledLabel::StyledLabel(QWidget *parent) _layout.setTextOption(opt); } +void StyledLabel::setCustomFont(const QFont &font) { + setFont(font); + _layout.setFont(font); + setText(_layout.text()); +} + void StyledLabel::setWrapMode(QTextOption::WrapMode mode) { if(_wrapMode == mode) return; @@ -64,6 +71,17 @@ void StyledLabel::setAlignment(Qt::Alignment alignment) { layout(); } +void StyledLabel::setResizeMode(ResizeMode mode) { + if(_resizeMode == mode) + return; + + _resizeMode = mode; + if(mode == DynamicResize) + setWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere); + else + setWrapMode(QTextOption::NoWrap); +} + void StyledLabel::resizeEvent(QResizeEvent *event) { QFrame::resizeEvent(event); @@ -127,7 +145,7 @@ void StyledLabel::updateToolTip() { void StyledLabel::layout() { qreal h = 0; - qreal w = frameRect().width() - 2*frameWidth(); + qreal w = contentsRect().width(); _layout.beginLayout(); forever { @@ -145,11 +163,12 @@ void StyledLabel::layout() { update(); } -void StyledLabel::paintEvent(QPaintEvent *) { +void StyledLabel::paintEvent(QPaintEvent *e) { + QFrame::paintEvent(e); QPainter painter(this); - qreal y = (frameRect().height() - _layout.boundingRect().height()) / 2; - _layout.draw(&painter, QPointF(0, y), _extraLayoutList); + qreal y = contentsRect().y() + (contentsRect().height() - _layout.boundingRect().height()) / 2; + _layout.draw(&painter, QPointF(contentsRect().x(), y), _extraLayoutList); } int StyledLabel::posToCursor(const QPointF &pos) { @@ -175,8 +194,15 @@ void StyledLabel::mouseMoveEvent(QMouseEvent *event) { } } +void StyledLabel::enterEvent(QEvent *) { + if(resizeMode() == ResizeOnHover) + setWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere); +} + void StyledLabel::leaveEvent(QEvent *) { endHoverMode(); + if(resizeMode() == ResizeOnHover) + setWrapMode(QTextOption::NoWrap); } void StyledLabel::mousePressEvent(QMouseEvent *event) {