From 84f57845755954d36c4003b0bd05236aed25b72b Mon Sep 17 00:00:00 2001 From: cc9cii Date: Tue, 9 Sep 2014 13:04:48 +1000 Subject: [PATCH] Remove document when closing the last view. Should resolve Bug #1292. --- apps/opencs/view/doc/view.cpp | 5 +++++ apps/opencs/view/doc/viewmanager.cpp | 12 ++++++++---- apps/opencs/view/doc/viewmanager.hpp | 1 + 3 files changed, 14 insertions(+), 4 deletions(-) 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: