From bba6891c848b9e3e3f347bfe8eb194fb09a9e6e1 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 16 Jun 2009 17:40:11 +0000 Subject: [PATCH] use the directory of the most recently opened file in wxDocManager if we have any git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61077 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/common/docview.cpp | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/src/common/docview.cpp b/src/common/docview.cpp index 11d6bca96d..51c55bcaf3 100644 --- a/src/common/docview.cpp +++ b/src/common/docview.cpp @@ -980,12 +980,34 @@ bool wxDocManager::Initialize() wxString wxDocManager::GetLastDirectory() const { - // use the system-dependent default location for the document files if - // we're being opened for the first time + // if we haven't determined the last used directory yet, do it now if ( m_lastDirectory.empty() ) { + // we're going to modify m_lastDirectory in this const method, so do it + // via non-const self pointer instead of const this one wxDocManager * const self = const_cast(this); - self->m_lastDirectory = wxStandardPaths::Get().GetAppDocumentsDir(); + + // first try to reuse the directory of the most recently opened file: + // 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() ) + { + const wxFileName fn(lastOpened); + if ( fn.DirExists() ) + { + self->m_lastDirectory = fn.GetPath(); + } + //else: should we try the next one? + } + + // if we don't have any files in the history (yet?), use the + // system-dependent default location for the document files + if ( m_lastDirectory.empty() ) + { + self->m_lastDirectory = wxStandardPaths::Get().GetAppDocumentsDir(); + } } return m_lastDirectory; -- 2.47.2