diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp index eb200ad79b7a9daccb3b03052e02c3917ad55284..22d69c8872885144e966b77ce8f093a47ef0bf74 100644 --- a/src/plugins/texteditor/basetexteditor.cpp +++ b/src/plugins/texteditor/basetexteditor.cpp @@ -4270,6 +4270,22 @@ int BaseTextEditor::verticalBlockSelection() const return qAbs(b.positionInBlock() - e.positionInBlock()) + d->m_blockSelectionExtraX; } +QRegion BaseTextEditor::translatedLineRegion(int lineStart, int lineEnd) const +{ + QRegion region; + for (int i = lineStart ; i <= lineEnd; i++) { + QTextBlock block = document()->findBlockByNumber(i); + QPoint topLeft = blockBoundingGeometry(block).translated(contentOffset()).topLeft().toPoint(); + QTextLayout *layout = block.layout(); + + for (int i = 0; i < layout->lineCount();i++) { + QTextLine line = layout->lineAt(i); + region += line.naturalTextRect().translated(topLeft).toRect(); + } + } + return region; +} + void BaseTextEditor::setFindScope(const QTextCursor &start, const QTextCursor &end, int verticalBlockSelection) { if (start != d->m_findScopeStart || end != d->m_findScopeEnd) { diff --git a/src/plugins/texteditor/basetexteditor.h b/src/plugins/texteditor/basetexteditor.h index 087d67e642f3373e6bfeecd505af51f9083add8a..afcc2548d041aee9c98a91d7497f9a9e38440540 100644 --- a/src/plugins/texteditor/basetexteditor.h +++ b/src/plugins/texteditor/basetexteditor.h @@ -216,6 +216,8 @@ public: int verticalBlockSelection() const; + QRegion translatedLineRegion(int lineStart, int lineEnd) const; + public slots: void setDisplayName(const QString &title);