+
+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) {
+ if(event->button() == Qt::LeftButton) {
+ Clickable click = _clickables.atCursorPos(posToCursor(event->posF()));
+ if(click.isValid())
+ emit clickableActivated(click);
+ }
+}
+
+void StyledLabel::setHoverMode(int start, int length) {
+ if(_extraLayoutList.count() >= 1 && _extraLayoutList.first().start == start && _extraLayoutList.first().length == length)
+ return;
+
+ QTextLayout::FormatRange range;
+ range.start = start;
+ range.length = length;
+ range.format.setFontUnderline(true);
+ _extraLayoutList.clear();
+ _extraLayoutList << range;
+
+ setCursor(Qt::PointingHandCursor);
+ update();
+}
+
+void StyledLabel::endHoverMode() {
+ _extraLayoutList.clear();
+ setCursor(Qt::ArrowCursor);
+ update();
+}
+