diff --git a/include/wx/docview.h b/include/wx/docview.h index b8bb1f31c9..c9109ce65b 100644 --- a/include/wx/docview.h +++ b/include/wx/docview.h @@ -133,7 +133,7 @@ public: virtual bool Draw(wxDC&); virtual bool IsModified() const { return m_documentModified; } - virtual void Modify(bool mod) { m_documentModified = mod; } + virtual void Modify(bool mod); virtual bool AddView(wxView *view); virtual bool RemoveView(wxView *view); diff --git a/src/common/docview.cpp b/src/common/docview.cpp index 6658e51f0e..b2ae02bdfe 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; @@ -713,7 +725,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)