aboutsummaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/guiSQLiteStudio/searchtextlocator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'SQLiteStudio3/guiSQLiteStudio/searchtextlocator.cpp')
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/searchtextlocator.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/SQLiteStudio3/guiSQLiteStudio/searchtextlocator.cpp b/SQLiteStudio3/guiSQLiteStudio/searchtextlocator.cpp
index ebdf2c0..7e5c2ec 100644
--- a/SQLiteStudio3/guiSQLiteStudio/searchtextlocator.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/searchtextlocator.cpp
@@ -69,6 +69,9 @@ int SearchTextLocator::getStartPosition() const
void SearchTextLocator::setStartPosition(int value)
{
+ if (ignoreCursorMovements)
+ return;
+
startPosition = value;
initialStartPosition = value;
afterDocPositionSwitch = false;
@@ -148,11 +151,18 @@ void SearchTextLocator::replaceCurrent()
if (lastMatchStart == -1 || lastMatchEnd == -1)
return;
+ ignoreCursorMovements = true;
+
QTextCursor cursor(document);
cursor.setPosition(lastMatchStart);
cursor.setPosition(lastMatchEnd, QTextCursor::KeepAnchor);
cursor.removeSelectedText();
cursor.insertText(replaceString);
+
+ ignoreCursorMovements = false;
+
+ // Adjust further lookups according to replaced lenght change.
+ startPosition += replaceString.length() - lookupString.length();
}
bool SearchTextLocator::find(QTextDocument::FindFlags flags)