http://bugzilla.lyx.org/show_bug.cgi?id=898
http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg147949.html
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@28478
a592a061-630c-0410-9148-
cb99ea01b6c8
#
Menu "context-label"
Item "Next Cross-Reference|N" "reference-next"
#
Menu "context-label"
Item "Next Cross-Reference|N" "reference-next"
- Item "Go back to Reference|G" "bookmark-goto 0"
+ Item "Go back|G" "bookmark-goto 0"
Separator
Item "Copy as Reference|C" "copy-label-as-reference"
Separator
Separator
Item "Copy as Reference|C" "copy-label-as-reference"
Separator
Item "Paste" "paste"
Submenu "Paste Recent|e" "edit_pasterecent"
Separator
Item "Paste" "paste"
Submenu "Paste Recent|e" "edit_pasterecent"
Separator
- Item "Jump to Saved Bookmark|B" "bookmark-goto 0"
+ Item "Jump Back to Saved Bookmark|B" "bookmark-goto 0"
Separator
Item "Move Paragraph Up|o" "paragraph-move-up"
Item "Move Paragraph Down|v" "paragraph-move-down"
Separator
Item "Move Paragraph Up|o" "paragraph-move-up"
Item "Move Paragraph Down|v" "paragraph-move-down"
Private(BufferView & bv): wh_(0), cursor_(bv),
anchor_pit_(0), anchor_ypos_(0),
inlineCompletionUniqueChars_(0),
Private(BufferView & bv): wh_(0), cursor_(bv),
anchor_pit_(0), anchor_ypos_(0),
inlineCompletionUniqueChars_(0),
- last_inset_(0), gui_(0)
+ last_inset_(0), bookmark_edit_position_(0), gui_(0)
+ // cache for id of the paragraph which was edited the last time
+ int bookmark_edit_position_;
+
mutable TextMetricsCache text_metrics_;
/// Whom to notify.
mutable TextMetricsCache text_metrics_;
/// Whom to notify.
+void BufferView::bookmarkEditPosition()
+{
+ // Don't eat cpu time for each keystroke
+ if (d->cursor_.paragraph().id() == d->bookmark_edit_position_)
+ return;
+ saveBookmark(0);
+ d->bookmark_edit_position_ = d->cursor_.paragraph().id();
+}
+
+
void BufferView::saveBookmark(unsigned int idx)
{
// tentatively save bookmark, id and pos will be used to
void BufferView::saveBookmark(unsigned int idx)
{
// tentatively save bookmark, id and pos will be used to
void insertPlaintextFile(support::FileName const & f, bool asParagraph);
///
void insertLyXFile(support::FileName const & f);
void insertPlaintextFile(support::FileName const & f, bool asParagraph);
///
void insertLyXFile(support::FileName const & f);
+ /// save temporary bookmark for jump back navigation
+ void bookmarkEditPosition();
if (!theBufferList().exists(bm.filename))
return;
if (!theBufferList().exists(bm.filename))
return;
+ // bm can be changed when saving
+ BookmarksSection::Bookmark tmp = bm;
+
+ // Special case idx == 0 used for back-from-back jump navigation
+ if (idx == 0)
+ dispatch(FuncRequest(LFUN_BOOKMARK_SAVE, "0"));
+
// if the current buffer is not that one, switch to it.
// if the current buffer is not that one, switch to it.
- if (lyx_view_->buffer()->fileName() != bm.filename) {
+ if (lyx_view_->buffer()->fileName() != tmp.filename) {
if (!switchToBuffer)
return;
dispatch(FuncRequest(LFUN_BUFFER_SWITCH, file));
}
if (!switchToBuffer)
return;
dispatch(FuncRequest(LFUN_BUFFER_SWITCH, file));
}
// moveToPosition try paragraph id first and then paragraph (pit, pos).
// moveToPosition try paragraph id first and then paragraph (pit, pos).
- if (!view()->moveToPosition(bm.bottom_pit, bm.bottom_pos,
- bm.top_id, bm.top_pos))
+ if (!view()->moveToPosition(tmp.bottom_pit, tmp.bottom_pos,
+ tmp.top_id, tmp.top_pos))
+ return;
+
+ // bm changed
+ if (idx == 0)
return;
// Cursor jump succeeded!
return;
// Cursor jump succeeded!
cur.resetAnchor();
moveCursor(cur, false);
cur.resetAnchor();
moveCursor(cur, false);
+ bv->bookmarkEditPosition();