]> git.saurik.com Git - wxWidgets.git/commitdiff
use the directory of the most recently opened file in wxDocManager if we have any
authorVadim Zeitlin <vadim@wxwidgets.org>
Tue, 16 Jun 2009 17:40:11 +0000 (17:40 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Tue, 16 Jun 2009 17:40:11 +0000 (17:40 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61077 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/common/docview.cpp

index 11d6bca96d17631d078784eb03f53a22d11893c3..51c55bcaf3f2ed8a999213b811bdd914d64bc550 100644 (file)
@@ -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<wxDocManager *>(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;