Close documents rather than views.

This commit is contained in:
cc9cii 2014-09-09 10:05:06 +10:00
parent cedf1171e3
commit ad8d722763

View File

@ -343,36 +343,33 @@ void CSVDoc::ViewManager::onExitWarningHandler (int state, CSMDoc::Document *doc
void CSVDoc::ViewManager::exitApplication (CSVDoc::View *view) void CSVDoc::ViewManager::exitApplication (CSVDoc::View *view)
{ {
// close the current view first // close the current document first
if(!closeRequest(view)) if(!notifySaveOnClose(view))
return; return;
else else
{ {
view->deleteLater(); CSMDoc::Document * document = view->getDocument();
if(document)
mDocumentManager.removeDocument(document);
view->setVisible(false); view->setVisible(false);
std::vector<View *>::iterator iter = std::find (mViews.begin(), mViews.end(), view);
if (iter!=mViews.end())
{
mViews.erase (iter);
updateIndices();
}
// attempt to close all other views // attempt to close all other documents
while(!mViews.empty()) while(!mViews.empty())
{ {
// raise the window // raise the window
mViews.back()->activateWindow(); mViews.back()->activateWindow();
mViews.back()->raise(); mViews.back()->raise();
if (!closeRequest(mViews.back())) if (!notifySaveOnClose(mViews.back()))
return; return;
else else
{ {
mViews.back()->deleteLater(); document = mViews.back()->getDocument();
if(document)
mDocumentManager.removeDocument(document);
mViews.back()->setVisible(false); mViews.back()->setVisible(false);
mViews.pop_back(); mViews.pop_back();
updateIndices();
} }
} }
} }
QApplication::instance()->exit(); // Editor exits (via a signal) when the last document is deleted
} }