Do not kill the undo stack when doing a Save As...

The code does a reload on the buffer to avoid loose pointers if the
file changes directory. This commit adds a bool parameter to
Buffer::reload to allow for keeping the undo stack intact. This is of
couse only wanted in this case, not when reloading an earlier version
of the file.
This commit is contained in:
Jean-Marc Lasgouttes 2012-08-21 12:19:18 +02:00
parent 3bf5d562b9
commit 824fe17511
4 changed files with 9 additions and 5 deletions

View File

@ -4419,8 +4419,8 @@ int Buffer::charCount(bool with_blanks) const
{
return d->charCount(with_blanks);
}
Buffer::ReadStatus Buffer::reload()
Buffer::ReadStatus Buffer::reload(bool clearUndo)
{
setBusy(true);
// c.f. bug http://www.lyx.org/trac/ticket/6587
@ -4438,7 +4438,8 @@ Buffer::ReadStatus Buffer::reload()
updateTitles();
markClean();
message(bformat(_("Document %1$s reloaded."), disp_fn));
d->undo_.clear();
if (clearUndo)
d->undo_.clear();
} else {
message(bformat(_("Could not reload document %1$s."), disp_fn));
}

View File

@ -209,7 +209,8 @@ public:
/// read a new document from a string
bool readString(std::string const &);
/// Reloads the LyX file
ReadStatus reload();
/// \param clearUndo if false, leave alone the undo stack.
ReadStatus reload(bool clearUndo = true);
//FIXME: The following function should be private
//private:
/// read the header, returns number of unknown tokens

View File

@ -2294,7 +2294,7 @@ bool GuiView::renameBuffer(Buffer & b, docstring const & newname)
bool const saved = saveBuffer(b, fname);
if (saved)
b.reload();
b.reload(false);
return saved;
}

View File

@ -118,6 +118,8 @@ What's new
- Make sure that undo restores paragraph longest label width correctly
(bug 8242).
- Do not forget the undo information when doing a Save As...
- Replace current selection when pasting (bug 8027).
- Fix enumitem module translation (bug #8201).