From 208b3746a68abdeb91d9aecce50f8d1e0975550b Mon Sep 17 00:00:00 2001
From: Thomas Hartmann <Thomas.Hartmann@nokia.com>
Date: Fri, 9 Jul 2010 16:09:08 +0200
Subject: [PATCH] BaseTextEditor: adding translatedLineRegion()

this function returns the bound region for the text in
lineStart to lineEnd

We use this to position the context pane
---
 src/plugins/texteditor/basetexteditor.cpp | 16 ++++++++++++++++
 src/plugins/texteditor/basetexteditor.h   |  2 ++
 2 files changed, 18 insertions(+)

diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp
index eb200ad79b7..22d69c88728 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 087d67e642f..afcc2548d04 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);
 
-- 
GitLab