diff --git a/src/Buffer.cpp b/src/Buffer.cpp index 29dfe4bfe2..de7f4d217c 100644 --- a/src/Buffer.cpp +++ b/src/Buffer.cpp @@ -5559,12 +5559,19 @@ Buffer::ReadStatus Buffer::reload() docstring const disp_fn = makeDisplayPath(d->filename.absFileName()); // clear parent. this will get reset if need be. + Buffer const * oldparent = d->parent(); d->setParent(nullptr); ReadStatus const status = loadLyXFile(); if (status == ReadSuccess) { updateBuffer(); changed(true); updateTitles(); + // reset parent if this hasn't been done yet + // but only if this is still its child (e.g., + // not after the former child has been saved as...) + if (!d->parent() && oldparent && oldparent->isFullyLoaded() + && oldparent->isChild(this)) + d->setParent(oldparent); markClean(); message(bformat(_("Document %1$s reloaded."), disp_fn)); d->undo_.clear();