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);