Add wxDocManager::FindDocumentByPath() helper.
Simply refactor the code which already existed inside wxDocManager in a new public method. Closes #15126. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73730 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -1418,6 +1418,19 @@ void wxDocument::Activate()
|
||||
win->Raise();
|
||||
}
|
||||
|
||||
wxDocument* wxDocManager::FindDocumentByPath(const wxString& path) const
|
||||
{
|
||||
const wxFileName fileName(path);
|
||||
for ( wxList::const_iterator i = m_docs.begin(); i != m_docs.end(); ++i )
|
||||
{
|
||||
wxDocument * const doc = wxStaticCast(*i, wxDocument);
|
||||
|
||||
if ( fileName == wxFileName(doc->GetFilename()) )
|
||||
return doc;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
wxDocument *wxDocManager::CreateDocument(const wxString& pathOrig, long flags)
|
||||
{
|
||||
// this ought to be const but SelectDocumentType/Path() are not
|
||||
@@ -1464,21 +1477,15 @@ wxDocument *wxDocManager::CreateDocument(const wxString& pathOrig, long flags)
|
||||
// check whether the document with this path is already opened
|
||||
if ( !path.empty() )
|
||||
{
|
||||
const wxFileName fn(path);
|
||||
for ( wxList::const_iterator i = m_docs.begin(); i != m_docs.end(); ++i )
|
||||
wxDocument * const doc = FindDocumentByPath(path);
|
||||
if (doc)
|
||||
{
|
||||
wxDocument * const doc = (wxDocument*)*i;
|
||||
|
||||
if ( fn == doc->GetFilename() )
|
||||
{
|
||||
// file already open, just activate it and return
|
||||
doc->Activate();
|
||||
return doc;
|
||||
}
|
||||
// file already open, just activate it and return
|
||||
doc->Activate();
|
||||
return doc;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// no, we need to create a new document
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user