X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/223d09f6b523aac674ef9b72a883dfa8d37c5d4e..bdb310a72026e7781cda51fd3fc353cbec9151ed:/src/msw/regconf.cpp diff --git a/src/msw/regconf.cpp b/src/msw/regconf.cpp index 4fb34f240d..404fb0d2d2 100644 --- a/src/msw/regconf.cpp +++ b/src/msw/regconf.cpp @@ -27,6 +27,9 @@ #include "wx/event.h" #include "wx/app.h" #include "wx/log.h" + +#if wxUSE_CONFIG + #include "wx/config.h" #ifndef __WIN16__ @@ -160,13 +163,25 @@ void wxRegConfig::SetPath(const wxString& strPath) } // recombine path parts in one variable - wxString strRegPath; + wxString strOldPath = m_strPath, strRegPath; m_strPath.Empty(); for ( size_t n = 0; n < aParts.Count(); n++ ) { strRegPath << '\\' << aParts[n]; m_strPath << wxCONFIG_PATH_SEPARATOR << aParts[n]; } + if ( m_strPath == strOldPath ) + return; + + // as we create the registry key when SetPath(key) is done, we can be left + // with plenty of empty keys if this was only done to try to read some value + // which, in fact, doesn't exist - to prevent this from happening we + // automatically delete the old key if it was empty + if ( m_keyLocal.IsEmpty() ) + { + m_keyLocal.DeleteSelf(); + } + // change current key(s) m_keyLocal.SetName(m_keyLocalRoot, strRegPath); m_keyGlobal.SetName(m_keyGlobalRoot, strRegPath); @@ -565,3 +580,5 @@ bool wxRegConfig::DeleteAll() #endif // __WIN16__ +#endif + // wxUSE_CONFIG