diff --git a/aegisub/src/main.cpp b/aegisub/src/main.cpp index dfa5d081b..10175b4ed 100644 --- a/aegisub/src/main.cpp +++ b/aegisub/src/main.cpp @@ -146,15 +146,19 @@ bool AegisubApp::OnInit() { // Set config file StartupLog(_T("Load configuration")); Options.LoadDefaults(); -#ifndef __WXMSW__ - Options.SetFile(StandardPaths::DecodePath(_T("?data/config.dat"))); +#ifdef __WXMSW__ + // TODO: Display a messagebox about permission being needed to write to local config once the string freeze is over with + if (wxFileName::IsFileWritable(StandardPaths::DecodePath(_T("?data/config.dat")))) + Options.SetFile(StandardPaths::DecodePath(_T("?data/config.dat"))); + else + Options.SetFile(StandardPaths::DecodePath(_T("?user/config.dat"))); Options.Load(); - if (!Options.AsBool(_T("Local config"))) + if (!Options.AsBool(_T("Local config")) && Options.GetFile() != StandardPaths::DecodePath(_T("?user/config.dat"))) #endif { Options.SetFile(StandardPaths::DecodePath(_T("?user/config.dat"))); Options.Load(); -#ifndef __WXMSW__ +#ifdef __WXMSW__ wxRemoveFile(StandardPaths::DecodePath(_T("?data/config.dat"))); #endif } diff --git a/aegisub/src/options.cpp b/aegisub/src/options.cpp index 355abf9b1..43a40f440 100644 --- a/aegisub/src/options.cpp +++ b/aegisub/src/options.cpp @@ -419,6 +419,14 @@ void OptionsManager::SetFile(wxString file) { } +//////////////// +// Get filename +wxString OptionsManager::GetFile() const +{ + return filename; +} + + //////// // Save void OptionsManager::Save() { diff --git a/aegisub/src/options.h b/aegisub/src/options.h index 7b74e273e..93da3e3d9 100644 --- a/aegisub/src/options.h +++ b/aegisub/src/options.h @@ -79,6 +79,7 @@ public: void Clear(); void SetFile(wxString file); + wxString GetFile() const; void Save(); void Load(); void LoadDefaults(bool onlyDefaults=false,bool versionOverride=false);