summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormae <qt-info@nokia.com>2010-05-21 16:06:31 +0200
committermae <qt-info@nokia.com>2010-05-21 16:06:31 +0200
commit076c03498f3615e68a0c056f2005165799160c49 (patch)
tree105280951b3e1dafc477af838d34abdcbda00148 /src
parente9d184155232805d4c82eb164768282fc61fca38 (diff)
downloadqt-creator-076c03498f3615e68a0c056f2005165799160c49.tar.gz
Fix critical vertical block selection issue
Vertical block selections could be painted where there was no selection, or they could jump randomly to columns futher right. Reviewed-by: dt
Diffstat (limited to 'src')
-rw-r--r--src/plugins/find/basetextfind.cpp5
-rw-r--r--src/plugins/texteditor/basetexteditor.cpp2
2 files changed, 4 insertions, 3 deletions
diff --git a/src/plugins/find/basetextfind.cpp b/src/plugins/find/basetextfind.cpp
index 1a9cbe3f5c..d2ddfc0441 100644
--- a/src/plugins/find/basetextfind.cpp
+++ b/src/plugins/find/basetextfind.cpp
@@ -325,10 +325,11 @@ void BaseTextFind::defineFindScope()
verticalBlockSelection = m_plaineditor->property("verticalBlockSelection").toInt();
if (verticalBlockSelection) {
- int findScopeFromColumn = qMin(m_findScopeStart.positionInBlock()+1,
+ QTextCursor findScopeVisualStart(document()->docHandle(), cursor.selectionStart());
+ int findScopeFromColumn = qMin(findScopeVisualStart.positionInBlock(),
m_findScopeEnd.positionInBlock());
int findScopeToColumn = findScopeFromColumn + verticalBlockSelection;
- m_findScopeStart.setPosition(m_findScopeStart.block().position() + findScopeFromColumn - 1);
+ m_findScopeStart.setPosition(findScopeVisualStart.block().position() + findScopeFromColumn - 1);
m_findScopeEnd.setPosition(m_findScopeEnd.block().position()
+ qMin(m_findScopeEnd.block().length()-1, findScopeToColumn));
m_findScopeVerticalBlockSelection = verticalBlockSelection;
diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp
index fca4b85065..2f7b32c918 100644
--- a/src/plugins/texteditor/basetexteditor.cpp
+++ b/src/plugins/texteditor/basetexteditor.cpp
@@ -2466,7 +2466,7 @@ void BaseTextEditor::paintEvent(QPaintEvent *e)
const QAbstractTextDocumentLayout::Selection &range = context.selections.at(i);
const int selStart = range.cursor.selectionStart() - blpos;
const int selEnd = range.cursor.selectionEnd() - blpos;
- if (selStart <= bllen && selEnd >= 0
+ if (selStart < bllen && selEnd >= 0
&& selEnd >= selStart) {
QTextLayout::FormatRange o;
o.start = selStart;