diff --git a/apps/opencs/view/doc/view.cpp b/apps/opencs/view/doc/view.cpp index 4868f20ff..384ae6c54 100644 --- a/apps/opencs/view/doc/view.cpp +++ b/apps/opencs/view/doc/view.cpp @@ -24,6 +24,11 @@ void CSVDoc::View::closeEvent (QCloseEvent *event) { if (!mViewManager.closeRequest (this)) event->ignore(); + else + { + // closeRequest() returns true if last document + mViewManager.removeDocument(mDocument); + } } void CSVDoc::View::setupFileMenu() diff --git a/apps/opencs/view/doc/viewmanager.cpp b/apps/opencs/view/doc/viewmanager.cpp index e31540173..47a52891e 100644 --- a/apps/opencs/view/doc/viewmanager.cpp +++ b/apps/opencs/view/doc/viewmanager.cpp @@ -192,6 +192,12 @@ bool CSVDoc::ViewManager::closeRequest (View *view) return continueWithClose; } +void CSVDoc::ViewManager::removeDocument (CSMDoc::Document *document) +{ + if(document) + mDocumentManager.removeDocument(document); +} + bool CSVDoc::ViewManager::notifySaveOnClose (CSVDoc::View *view) { bool result = true; @@ -349,8 +355,7 @@ void CSVDoc::ViewManager::exitApplication (CSVDoc::View *view) else { CSMDoc::Document * document = view->getDocument(); - if(document) - mDocumentManager.removeDocument(document); + removeDocument(document); view->setVisible(false); // attempt to close all other documents @@ -364,8 +369,7 @@ void CSVDoc::ViewManager::exitApplication (CSVDoc::View *view) else { document = mViews.back()->getDocument(); - if(document) - mDocumentManager.removeDocument(document); + removeDocument(document); mViews.back()->setVisible(false); mViews.pop_back(); } diff --git a/apps/opencs/view/doc/viewmanager.hpp b/apps/opencs/view/doc/viewmanager.hpp index 8cc92774b..6be3aba5a 100644 --- a/apps/opencs/view/doc/viewmanager.hpp +++ b/apps/opencs/view/doc/viewmanager.hpp @@ -55,6 +55,7 @@ namespace CSVDoc ///< Return number of views for \a document. bool closeRequest (View *view); + void removeDocument (CSMDoc::Document *document); signals: