From eb495d2e984c351dce6cdbb4a0b6f097bbea1560 Mon Sep 17 00:00:00 2001 From: Bo Peng Date: Sun, 28 Jan 2007 21:12:33 +0000 Subject: [PATCH] Fix Bug3171: update bookmark after saveCursor git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@16919 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/BufferView.C | 13 +++++++++++++ src/lyxfunc.C | 3 --- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/BufferView.C b/src/BufferView.C index 8c3abfb7b8..acd74c38f0 100644 --- a/src/BufferView.C +++ b/src/BufferView.C @@ -155,6 +155,19 @@ void BufferView::setBuffer(Buffer * b) // to this buffer later on. buffer_->saveCursor(cursor_.selectionBegin(), cursor_.selectionEnd()); + // update bookmark pit of the current buffer before switch + for (size_t i = 0; i < LyX::ref().session().bookmarks().size(); ++i) { + BookmarksSection::Bookmark const & bm = LyX::ref().session().bookmarks().bookmark(i); + if (buffer()->fileName() != bm.filename.absFilename()) + continue; + // if par_id or pit has been changed, reset par_pit and par_id + // see http://bugzilla.lyx.org/show_bug.cgi?id=3092 + pit_type new_pit; + int new_id; + boost::tie(new_pit, new_id) = moveToPosition(bm.par_pit, bm.par_id, bm.par_pos); + if (bm.par_pit != new_pit || bm.par_id != new_id) + const_cast(bm).setPos(new_pit, new_id); + } // current buffer is going to be switched-off, save cursor pos LyX::ref().session().lastFilePos().save(FileName(buffer_->fileName()), boost::tie(cursor_.pit(), cursor_.pos()) ); diff --git a/src/lyxfunc.C b/src/lyxfunc.C index adcf1ce862..369186ecdc 100644 --- a/src/lyxfunc.C +++ b/src/lyxfunc.C @@ -1165,9 +1165,6 @@ void LyXFunc::dispatch(FuncRequest const & cmd) // --- buffers ---------------------------------------- case LFUN_BUFFER_SWITCH: BOOST_ASSERT(lyx_view_); - // update bookmark pit of the current buffer before switch - for (size_t i = 0; i < LyX::ref().session().bookmarks().size(); ++i) - gotoBookmark(i+1, false, false); lyx_view_->setBuffer(theBufferList().getBuffer(argument)); break;