From ad8d722763a322255c6b52a7e1cb924383b3d8a7 Mon Sep 17 00:00:00 2001 From: cc9cii Date: Tue, 9 Sep 2014 10:05:06 +1000 Subject: [PATCH] Close documents rather than views. --- apps/opencs/view/doc/viewmanager.cpp | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/apps/opencs/view/doc/viewmanager.cpp b/apps/opencs/view/doc/viewmanager.cpp index 5b6dbaaf67..e31540173c 100644 --- a/apps/opencs/view/doc/viewmanager.cpp +++ b/apps/opencs/view/doc/viewmanager.cpp @@ -343,36 +343,33 @@ void CSVDoc::ViewManager::onExitWarningHandler (int state, CSMDoc::Document *doc void CSVDoc::ViewManager::exitApplication (CSVDoc::View *view) { - // close the current view first - if(!closeRequest(view)) + // close the current document first + if(!notifySaveOnClose(view)) return; else { - view->deleteLater(); + CSMDoc::Document * document = view->getDocument(); + if(document) + mDocumentManager.removeDocument(document); view->setVisible(false); - std::vector::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()) { // raise the window mViews.back()->activateWindow(); mViews.back()->raise(); - if (!closeRequest(mViews.back())) + if (!notifySaveOnClose(mViews.back())) return; else { - mViews.back()->deleteLater(); + document = mViews.back()->getDocument(); + if(document) + mDocumentManager.removeDocument(document); mViews.back()->setVisible(false); mViews.pop_back(); - updateIndices(); } } } - QApplication::instance()->exit(); + // Editor exits (via a signal) when the last document is deleted }