[LyX/2.3.x] Fix bug #11456.

Richard Kimberly Heck rikiheck at lyx.org
Mon May 18 04:05:06 UTC 2020


commit 1741eb9c2c09bccd030317f841d6c5edfd54977f
Author: Richard Kimberly Heck <rikiheck at lyx.org>
Date:   Mon May 18 00:28:36 2020 -0400

    Fix bug #11456.
    
    Add cancel button and take no action if we're canceled.
    
    (cherry picked from commit 2de99c5dd9ebdc47f7f569ddf71e44557745f413)
---
 src/frontends/qt4/GuiView.cpp |   11 +++++++----
 src/frontends/qt4/GuiView.h   |    2 +-
 status.23x                    |    3 +++
 3 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/src/frontends/qt4/GuiView.cpp b/src/frontends/qt4/GuiView.cpp
index f2d3157..ba4cd78 100644
--- a/src/frontends/qt4/GuiView.cpp
+++ b/src/frontends/qt4/GuiView.cpp
@@ -2884,7 +2884,9 @@ bool GuiView::closeWorkArea(GuiWorkArea * wa)
 				  "  Tools->Preferences->Look&Feel->UserInterface\n"
 				), file);
 			int ret = Alert::prompt(_("Close or hide document?"),
-				text, 0, 1, _("&Close"), _("&Hide"));
+				text, 0, 2, _("&Close"), _("&Hide"), _("&Cancel"));
+			if (ret == 2)
+				return false;
 			close_buffer = (ret == 0);
 		}
 	}
@@ -3023,12 +3025,13 @@ bool GuiView::closeBuffer(Buffer & buf)
 			// Even in this case, children can be dirty (e.g.,
 			// after a label change in the master, see #11405).
 			// Therefore, check this
-			if (closing_ && (child_buf->isClean() || child_buf->paragraphs().empty()))
+			if (closing_ && (child_buf->isClean() || child_buf->paragraphs().empty())) {
 				// If we are in a close_event all children will be closed in some time,
 				// so no need to do it here. This will ensure that the children end up
 				// in the session file in the correct order. If we close the master
 				// buffer, we can close or release the child buffers here too.
 				continue;
+			}
 			// Save dirty buffers also if closing_!
 			if (saveBufferIfNeeded(*child_buf, false)) {
 				child_buf->removeAutosaveFile();
@@ -3045,8 +3048,8 @@ bool GuiView::closeBuffer(Buffer & buf)
 		// goto bookmark to update bookmark pit.
 		// FIXME: we should update only the bookmarks related to this buffer!
 		LYXERR(Debug::DEBUG, "GuiView::closeBuffer()");
-		for (size_t i = 0; i < theSession().bookmarks().size(); ++i)
-			guiApp->gotoBookmark(i+1, false, false);
+		for (unsigned int i = 0; i < theSession().bookmarks().size(); ++i)
+			guiApp->gotoBookmark(i + 1, false, false);
 
 		if (saveBufferIfNeeded(buf, false)) {
 			buf.removeAutosaveFile();
diff --git a/src/frontends/qt4/GuiView.h b/src/frontends/qt4/GuiView.h
index 3ca4641..e78df4b 100644
--- a/src/frontends/qt4/GuiView.h
+++ b/src/frontends/qt4/GuiView.h
@@ -414,7 +414,7 @@ private:
 	/// closes the tabworkarea and all tabs. If we are in a close event,
 	/// all buffers will be closed, otherwise they will be hidden.
 	bool closeTabWorkArea(TabWorkArea * twa);
-	/// gives the user the possibility to save his work
+        /// gives the user the possibility to save their work
 	/// or to discard the changes. If hiding is true, the
 	/// document will be reloaded.
 	bool saveBufferIfNeeded(Buffer & buf, bool hiding);
diff --git a/status.23x b/status.23x
index 4b05d28..d634b07 100644
--- a/status.23x
+++ b/status.23x
@@ -128,6 +128,9 @@ What's new
 - Correct hierarchy level of Bib(la)tex inset in outliner if "Show in Toc"
   is selected (bug 11863).
 
+- Don't close a document if the "close or hide" dialog is canceled (bug
+  11456).
+
 
 * INTERNALS
 


More information about the lyx-cvs mailing list