diff options
Diffstat (limited to 'src/widgets/widgets/qtextedit.cpp')
-rw-r--r-- | src/widgets/widgets/qtextedit.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/widgets/widgets/qtextedit.cpp b/src/widgets/widgets/qtextedit.cpp index 5f734258b2..01f7c34f93 100644 --- a/src/widgets/widgets/qtextedit.cpp +++ b/src/widgets/widgets/qtextedit.cpp @@ -167,6 +167,7 @@ void QTextEditPrivate::init(const QString &html) QObject::connect(control, SIGNAL(copyAvailable(bool)), q, SIGNAL(copyAvailable(bool))); QObject::connect(control, SIGNAL(selectionChanged()), q, SIGNAL(selectionChanged())); QObject::connect(control, SIGNAL(cursorPositionChanged()), q, SLOT(_q_cursorPositionChanged())); + QObject::connect(control, SIGNAL(blockMarkerHovered(QTextBlock)), q, SLOT(_q_hoveredBlockWithMarkerChanged(QTextBlock))); QObject::connect(control, SIGNAL(textChanged()), q, SLOT(updateMicroFocus())); @@ -187,6 +188,7 @@ void QTextEditPrivate::init(const QString &html) vbar->setSingleStep(20); viewport->setBackgroundRole(QPalette::Base); + q->setMouseTracking(true); q->setAcceptDrops(true); q->setFocusPolicy(Qt::StrongFocus); q->setAttribute(Qt::WA_KeyCompression); @@ -228,6 +230,21 @@ void QTextEditPrivate::_q_cursorPositionChanged() #endif } +void QTextEditPrivate::_q_hoveredBlockWithMarkerChanged(const QTextBlock &block) +{ + Q_Q(QTextEdit); + Qt::CursorShape cursor = cursorToRestoreAfterHover; + if (block.isValid() && !q->isReadOnly()) { + QTextBlockFormat::MarkerType marker = block.blockFormat().marker(); + if (marker != QTextBlockFormat::NoMarker) { + if (viewport->cursor().shape() != Qt::PointingHandCursor) + cursorToRestoreAfterHover = viewport->cursor().shape(); + cursor = Qt::PointingHandCursor; + } + } + viewport->setCursor(cursor); +} + void QTextEditPrivate::pageUpDown(QTextCursor::MoveOperation op, QTextCursor::MoveMode moveMode) { QTextCursor cursor = control->textCursor(); |