X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/33ac7e6f01acbac1cff0ad400d8ea7f0bfd0a62f..9f39393d9efe16244c8d213076582dfd996cb129:/src/msw/regconf.cpp?ds=sidebyside diff --git a/src/msw/regconf.cpp b/src/msw/regconf.cpp index 4b9844cfbf..2fa8685006 100644 --- a/src/msw/regconf.cpp +++ b/src/msw/regconf.cpp @@ -221,7 +221,11 @@ void wxRegConfig::SetPath(const wxString& strPath) { strFullPath.reserve(2*m_strPath.length()); - strFullPath << m_strPath << wxCONFIG_PATH_SEPARATOR << strPath; + strFullPath << m_strPath; + if ( strFullPath.Len() == 0 || + strFullPath.Last() != wxCONFIG_PATH_SEPARATOR ) + strFullPath << wxCONFIG_PATH_SEPARATOR; + strFullPath << strPath; } // simplify it: we need to handle ".." here @@ -305,8 +309,12 @@ void wxRegConfig::SetPath(const wxString& strPath) totalSlashes++; } - //else: nothing to do, we squeeze several subseuquent - // slashes into one + else // previous char was a slash too + { + // squeeze several subsequent slashes into one: i.e. + // just ignore this one + dst--; + } } } else // normal character @@ -691,34 +699,7 @@ bool wxRegConfig::RenameEntry(const wxString& oldName, const wxString& newName) if ( HasEntry(newName) ) return FALSE; - // delete the old entry and create the new one - but do in the reverse - // order to not lose the data if Create() fails - - bool ok; - if ( m_keyLocal.IsNumericValue(oldName) ) - { - long val; - ok = m_keyLocal.QueryValue(oldName, &val) && - m_keyLocal.SetValue(newName, val); - } - else - { - wxString val; - ok = m_keyLocal.QueryValue(oldName, val) && - m_keyLocal.SetValue(newName, val); - } - - if ( !ok ) - return FALSE; - - if ( !m_keyLocal.DeleteValue(oldName) ) - { - m_keyLocal.DeleteValue(newName); - - return FALSE; - } - - return TRUE; + return m_keyLocal.RenameValue(oldName, newName); } bool wxRegConfig::RenameGroup(const wxString& oldName, const wxString& newName) @@ -731,11 +712,7 @@ bool wxRegConfig::RenameGroup(const wxString& oldName, const wxString& newName) if ( HasGroup(newName) ) return FALSE; - // TODO there is no way to rename a registry key - we must do a deep copy - // ourselves - wxFAIL_MSG(wxT("Registry key renaming not implemented")); - - return FALSE; + return wxRegKey(m_keyLocal, oldName).Rename(newName); } // ----------------------------------------------------------------------------