From 326a035a5bd04376bbcf585e60437d299b2b96cf Mon Sep 17 00:00:00 2001 From: Vincent van Ravesteijn Date: Sun, 5 Apr 2009 20:16:32 +0000 Subject: [PATCH] Fix bug #2213 (part 5): GuiChanges lacks "Previous Change" button. Make sure we jump to the next or previous change when we switch search direction. Without this patch, the same Change will be found and only the cursor is moved from the end (or begin) to the begin (or end) of the selection. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@29115 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/Cursor.cpp | 6 ++++++ src/Cursor.h | 2 ++ src/lyxfind.cpp | 7 +++++++ 3 files changed, 15 insertions(+) diff --git a/src/Cursor.cpp b/src/Cursor.cpp index 91402c3396..afa8a9b30f 100644 --- a/src/Cursor.cpp +++ b/src/Cursor.cpp @@ -426,6 +426,12 @@ void Cursor::resetAnchor() } +void Cursor::setCursorToAnchor() +{ + if (selection()) + setCursor(anchor_); +} + bool Cursor::posBackward() { diff --git a/src/Cursor.h b/src/Cursor.h index 276bf2e989..81b2d9b97e 100644 --- a/src/Cursor.h +++ b/src/Cursor.h @@ -63,6 +63,8 @@ public: void leaveInset(Inset const & inset); /// sets cursor part void setCursor(DocIterator const & it); + /// sets the cursor to the anchor + void setCursorToAnchor(); /// void setCurrentFont(); diff --git a/src/lyxfind.cpp b/src/lyxfind.cpp index 40e503e5f9..6fa6aade1f 100644 --- a/src/lyxfind.cpp +++ b/src/lyxfind.cpp @@ -352,6 +352,13 @@ bool findPreviousChange(BufferView * bv) bool findChange(BufferView * bv, bool next) { + if (bv->cursor().selection()) { + // set the cursor at the beginning or at the end of the selection + // before searching. Otherwise, the current change will be found. + if (next != bv->cursor().top() > bv->cursor().anchor()) + bv->cursor().setCursorToAnchor(); + } + DocIterator cur = bv->cursor(); if (!findChange(cur, next)) return false; -- 2.39.5