Add cancel button and take no action if we're canceled.

(cherry picked from commit 2de99c5dd9)
This commit is contained in:
Richard Kimberly Heck 2020-05-18 00:28:36 -04:00
parent 3d50e90310
commit 1741eb9c2c
3 changed files with 11 additions and 5 deletions

View File

@ -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();

View File

@ -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);

View File

@ -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