fix the bug with the current path being restored if it was under the group being deleted with DeleteGroup(); clarify what happens in this case in the docs
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@40095 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -454,7 +454,10 @@ in it and the second parameter is true.
|
|||||||
|
|
||||||
\func{bool}{DeleteGroup}{\param{const wxString\& }{ key}}
|
\func{bool}{DeleteGroup}{\param{const wxString\& }{ key}}
|
||||||
|
|
||||||
Delete the group (with all subgroups)
|
Delete the group (with all subgroups). If the current path is under the group
|
||||||
|
being deleted it is changed to its deepest still existing component. E.g. if
|
||||||
|
the current path is \texttt{/A/B/C/D} and the group \texttt{C} is deleted the
|
||||||
|
path becomes \texttt{/A/B}.
|
||||||
|
|
||||||
|
|
||||||
\membersection{wxConfigBase::Exists}\label{wxconfigbaseexists}
|
\membersection{wxConfigBase::Exists}\label{wxconfigbaseexists}
|
||||||
|
@@ -274,6 +274,21 @@ wxConfigPathChanger::wxConfigPathChanger(const wxConfigBase *pContainer,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void wxConfigPathChanger::UpdateIfDeleted()
|
||||||
|
{
|
||||||
|
// we don't have to do anything at all if we didn't change the path
|
||||||
|
if ( !m_bChanged )
|
||||||
|
return;
|
||||||
|
|
||||||
|
// find the deepest still existing parent path of the original path
|
||||||
|
while ( !m_pContainer->HasGroup(m_strOldPath) )
|
||||||
|
{
|
||||||
|
m_strOldPath = m_strOldPath.BeforeLast(wxCONFIG_PATH_SEPARATOR);
|
||||||
|
if ( m_strOldPath.empty() )
|
||||||
|
m_strOldPath = wxCONFIG_PATH_SEPARATOR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
wxConfigPathChanger::~wxConfigPathChanger()
|
wxConfigPathChanger::~wxConfigPathChanger()
|
||||||
{
|
{
|
||||||
// only restore path if it was changed
|
// only restore path if it was changed
|
||||||
|
@@ -1145,6 +1145,8 @@ bool wxFileConfig::DeleteGroup(const wxString& key)
|
|||||||
if ( !m_pCurrentGroup->DeleteSubgroupByName(path.Name()) )
|
if ( !m_pCurrentGroup->DeleteSubgroupByName(path.Name()) )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
path.UpdateIfDeleted();
|
||||||
|
|
||||||
SetDirty();
|
SetDirty();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@@ -699,7 +699,18 @@ bool wxRegConfig::DeleteGroup(const wxString& key)
|
|||||||
{
|
{
|
||||||
wxConfigPathChanger path(this, key);
|
wxConfigPathChanger path(this, key);
|
||||||
|
|
||||||
return m_keyLocal.Exists() ? LocalKey().DeleteKey(path.Name()) : true;
|
if ( !m_keyLocal.Exists() )
|
||||||
|
{
|
||||||
|
// nothing to do
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( !LocalKey().DeleteKey(path.Name()) )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
path.UpdateIfDeleted();
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxRegConfig::DeleteAll()
|
bool wxRegConfig::DeleteAll()
|
||||||
@@ -717,5 +728,4 @@ bool wxRegConfig::DeleteAll()
|
|||||||
return bOk;
|
return bOk;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif // wxUSE_CONFIG
|
||||||
// wxUSE_CONFIG
|
|
||||||
|
Reference in New Issue
Block a user