size_t UIContext::countViewsOf(Document* document) const { Workspace* workspace = App::instance()->getMainWindow()->getWorkspace(); size_t counter = 0; for (Workspace::iterator it=workspace->begin(); it != workspace->end(); ++it) { WorkspaceView* view = *it; if (DocumentView* docView = dynamic_cast<DocumentView*>(view)) { if (docView->getDocument() == document) { ++counter; } } } return counter; }
void UIContext::onRemoveDocument(doc::Document* doc) { Context::onRemoveDocument(doc); Workspace* workspace = App::instance()->getMainWindow()->getWorkspace(); DocumentViews docViews; // Collect all views related to the document. for (Workspace::iterator it=workspace->begin(); it != workspace->end(); ++it) { WorkspaceView* view = *it; if (DocumentView* docView = dynamic_cast<DocumentView*>(view)) { if (docView->getDocument() == doc) { docViews.push_back(docView); } } } for (DocumentViews::iterator it=docViews.begin(); it != docViews.end(); ++it) { DocumentView* docView = *it; workspace->removeView(docView); delete docView; } }