X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fstyledlabel.cpp;h=a87aa8ce77cee0b57eceeca13b3a79d200dee323;hp=372b9bbef53a31e94711db419b4c52c79cda2482;hb=67a12e19088282f2218b602463cae3de5bb5baad;hpb=7a68d46fd695fd42cd234ed908abeb1ab36171c9;ds=sidebyside diff --git a/src/uisupport/styledlabel.cpp b/src/uisupport/styledlabel.cpp index 372b9bbe..a87aa8ce 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); @@ -175,8 +193,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) {