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