mirror of
https://git.lyx.org/repos/lyx.git
synced 2025-01-09 18:52:46 +00:00
Generalize Buffer::autoSave() for both the threaded as the forked process call. Also move out the resetAutosaveTimers as this is the task of the frontend as the core shouldn't know about any timer.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@36325 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
a0916d4fef
commit
208acbc728
@ -2025,6 +2025,7 @@ void Buffer::dispatch(FuncRequest const & func, DispatchResult & dr)
|
|||||||
|
|
||||||
case LFUN_BUFFER_AUTO_SAVE:
|
case LFUN_BUFFER_AUTO_SAVE:
|
||||||
autoSave();
|
autoSave();
|
||||||
|
resetAutosaveTimers();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case LFUN_BRANCH_ADD: {
|
case LFUN_BRANCH_ADD: {
|
||||||
@ -3270,23 +3271,36 @@ void Buffer::moveAutosaveFile(support::FileName const & oldauto) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Perfect target for a thread...
|
bool Buffer::autoSave() const
|
||||||
void Buffer::autoSave() const
|
|
||||||
{
|
{
|
||||||
if (d->bak_clean || isReadonly()) {
|
Buffer const * buf = d->cloned_buffer_ ? d->cloned_buffer_ : this;
|
||||||
// We don't save now, but we'll try again later
|
if (buf->d->bak_clean || isReadonly())
|
||||||
resetAutosaveTimers();
|
return true;
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// emit message signal.
|
|
||||||
message(_("Autosaving current document..."));
|
message(_("Autosaving current document..."));
|
||||||
AutoSaveBuffer autosave(*this, getAutosaveFileName());
|
buf->d->bak_clean = true;
|
||||||
|
|
||||||
|
FileName const fname = getAutosaveFileName();
|
||||||
|
if (d->cloned_buffer_) {
|
||||||
|
// If this buffer is cloned, we assume that
|
||||||
|
// we are running in a separate thread already.
|
||||||
|
FileName const tmp_ret = FileName::tempName("lyxauto");
|
||||||
|
if (!tmp_ret.empty()) {
|
||||||
|
writeFile(tmp_ret);
|
||||||
|
// assume successful write of tmp_ret
|
||||||
|
if (tmp_ret.moveTo(fname))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
// failed to write/rename tmp_ret so try writing direct
|
||||||
|
return writeFile(fname);
|
||||||
|
} else {
|
||||||
|
/// This function is deprecated as the frontend needs to take care
|
||||||
|
/// of cloning the buffer and autosaving it in another thread. It
|
||||||
|
/// is still here to allow (QT_VERSION < 0x040400).
|
||||||
|
AutoSaveBuffer autosave(*this, fname);
|
||||||
autosave.start();
|
autosave.start();
|
||||||
|
return true;
|
||||||
d->bak_clean = true;
|
}
|
||||||
|
|
||||||
resetAutosaveTimers();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -235,8 +235,8 @@ private:
|
|||||||
public:
|
public:
|
||||||
/// \name Functions involved in autosave and emergency files.
|
/// \name Functions involved in autosave and emergency files.
|
||||||
//@{
|
//@{
|
||||||
///
|
/// Save an autosave file to #filename.lyx#
|
||||||
void autoSave() const;
|
bool autoSave() const;
|
||||||
/// save emergency file
|
/// save emergency file
|
||||||
/// \return a status message towards the user.
|
/// \return a status message towards the user.
|
||||||
docstring emergencyWrite();
|
docstring emergencyWrite();
|
||||||
|
@ -1530,6 +1530,7 @@ void GuiView::autoSave()
|
|||||||
d.autosave_watcher_.setFuture(f);
|
d.autosave_watcher_.setFuture(f);
|
||||||
#else
|
#else
|
||||||
buffer->autoSave();
|
buffer->autoSave();
|
||||||
|
resetAutosaveTimers();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user