X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ce0822e1b9de6ce9cd9b828b807b7cf319cdfed0..f050bdbd5b69ed1a6752102f0c4c13bc7cb4ed3c:/src/common/docview.cpp diff --git a/src/common/docview.cpp b/src/common/docview.cpp index 5dae19b52b..9e5e65a015 100644 --- a/src/common/docview.cpp +++ b/src/common/docview.cpp @@ -233,6 +233,18 @@ wxView *wxDocument::GetFirstView() const return static_cast(m_documentViews.GetFirst()->GetData()); } +void wxDocument::Modify(bool mod) +{ + if (mod != m_documentModified) + { + m_documentModified = mod; + + // Allow views to append asterix to the title + wxView* view = GetFirstView(); + if (view) view->OnChangeFilename(); + } +} + wxDocManager *wxDocument::GetDocumentManager() const { return m_documentTemplate ? m_documentTemplate->GetDocumentManager() : NULL; @@ -327,15 +339,6 @@ bool wxDocument::SaveAs() if (fileName.empty()) return false; // cancelled by user - wxString ext; - wxFileName::SplitPath(fileName, NULL, NULL, &ext); - - if (ext.empty()) - { - fileName += wxT("."); - fileName += docTemplate->GetDefaultExtension(); - } - // Files that were not saved correctly are not added to the FileHistory. if (!OnSaveDocument(fileName)) return false; @@ -343,16 +346,16 @@ bool wxDocument::SaveAs() SetTitle(wxFileNameFromPath(fileName)); SetFilename(fileName, true); // will call OnChangeFileName automatically - // A file that doesn't use the default extension of its document template - // cannot be opened via the FileHistory, so we do not add it. - if (docTemplate->FileMatchesTemplate(fileName)) - { - GetDocumentManager()->AddFileToHistory(fileName); - } - //else: the user will probably not be able to open the file again, so we - // could warn about the wrong file-extension here + // A file that doesn't use the default extension of its document template + // cannot be opened via the FileHistory, so we do not add it. + if (docTemplate->FileMatchesTemplate(fileName)) + { + GetDocumentManager()->AddFileToHistory(fileName); + } + //else: the user will probably not be able to open the file again, so we + // could warn about the wrong file-extension here - return true; + return true; } bool wxDocument::OnSaveDocument(const wxString& file) @@ -713,7 +716,12 @@ void wxView::OnChangeFilename() wxDocument *doc = GetDocument(); if (!doc) return; - win->SetLabel(doc->GetUserReadableName()); + wxString label = doc->GetUserReadableName(); + if (doc->IsModified()) + { + label += "*"; + } + win->SetLabel(label); } void wxView::SetDocument(wxDocument *doc) @@ -899,8 +907,6 @@ wxDocManager* wxDocManager::sm_docManager = NULL; wxDocManager::wxDocManager(long WXUNUSED(flags), bool initialize) { - wxASSERT_MSG( !sm_docManager, "multiple wxDocManagers not allowed" ); - sm_docManager = this; m_defaultDocumentNameCounter = 1; @@ -991,9 +997,9 @@ wxString wxDocManager::GetLastDirectory() const // this ensures that if the user opens a file, closes the program and // runs it again the "Open file" dialog will open in the directory of // the last file he used - wxString lastOpened = GetHistoryFile(0); - if ( !lastOpened.empty() ) + if ( m_fileHistory && m_fileHistory->GetCount() ) { + const wxString lastOpened = m_fileHistory->GetHistoryFile(0); const wxFileName fn(lastOpened); if ( fn.DirExists() ) { @@ -1001,6 +1007,7 @@ wxString wxDocManager::GetLastDirectory() const } //else: should we try the next one? } + //else: no history yet // if we don't have any files in the history (yet?), use the // system-dependent default location for the document files @@ -1094,6 +1101,7 @@ void wxDocManager::OnPrint(wxCommandEvent& WXUNUSED(event)) void wxDocManager::OnPreview(wxCommandEvent& WXUNUSED(event)) { #if wxUSE_PRINTING_ARCHITECTURE + wxBusyCursor busy; wxView *view = GetActiveView(); if (!view) return;