diff --git a/include/wx/config.h b/include/wx/config.h index c48ee1c367..f5b1b195eb 100644 --- a/include/wx/config.h +++ b/include/wx/config.h @@ -101,7 +101,7 @@ public: // ctor & virtual dtor // environment variable expansion is on by default - wxConfigBase() { m_bExpandEnvVars = TRUE; } + wxConfigBase() { m_bExpandEnvVars = TRUE; m_bRecordDefaults = FALSE; } // empty but ensures that dtor of all derived classes is virtual virtual ~wxConfigBase() { } @@ -172,7 +172,10 @@ public: // (this option is on by default, you can turn it on/off at any time) bool IsExpandingEnvVars() const { return m_bExpandEnvVars; } void SetExpandEnvVars(bool bDoIt = TRUE) { m_bExpandEnvVars = bDoIt; } - // does expansion only if needed + // recording of default values + void SetRecordDefaults(bool bDoIt = TRUE) { m_bRecordDefaults = bDoIt; } + bool IsRecordingDefaults() const { return m_bRecordDefaults; } + // does expansion only if needed wxString ExpandEnvVars(const wxString& str) const { wxString tmp; // Required for BC++ @@ -211,7 +214,9 @@ protected: private: // are we doing automatic environment variable expansion? bool m_bExpandEnvVars; - + // do we record default values? + bool m_bRecordDefaults; + // static variables static wxConfigBase *ms_pConfig; static bool ms_bAutoCreate; diff --git a/src/common/fileconf.cpp b/src/common/fileconf.cpp index 0bf48eeb78..e2ba1c0aaf 100644 --- a/src/common/fileconf.cpp +++ b/src/common/fileconf.cpp @@ -532,6 +532,8 @@ bool wxFileConfig::Read(wxString *pstr, ConfigEntry *pEntry = m_pCurrentGroup->FindEntry(path.Name()); if (pEntry == NULL) { + if(IsRecordingDefaults()) + Write(szKey,szDefault); *pstr = ExpandEnvVars(szDefault); return FALSE; } diff --git a/src/msw/regconf.cpp b/src/msw/regconf.cpp index 220058f609..635bdf355d 100644 --- a/src/msw/regconf.cpp +++ b/src/msw/regconf.cpp @@ -281,6 +281,9 @@ bool wxRegConfig::Read(wxString *pStr, return TRUE; } + if(IsRecordingDefaults()) + Write(szKey,szDefault); + // default value *pStr = szDefault; return FALSE;