[LyX/master] Restore parent after buffer reload (#13031)

Juergen Spitzmueller spitz at lyx.org
Fri Jan 19 06:42:13 UTC 2024


commit 4cfa3488e50a7be245e81c15ac7903087dc27084
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Fri Jan 19 09:09:28 2024 +0100

    Restore parent after buffer reload (#13031)
---
 src/Buffer.cpp |    7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/src/Buffer.cpp b/src/Buffer.cpp
index 29dfe4b..de7f4d2 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();


More information about the lyx-cvs mailing list