From a124f99a24fb1f2ef41e37223ea35bcc9a4eece9 Mon Sep 17 00:00:00 2001
From: Robert Roebling <robert@roebling.de>
Date: Sat, 9 Sep 2006 11:35:32 +0000
Subject: [PATCH]   Apply patch [ 1554736 ] wxXmlDocument::DetachRoot

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@41085 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
---
 docs/latex/wx/xmldocument.tex | 13 +++++++++++++
 include/wx/xml/xml.h          |  1 +
 2 files changed, 14 insertions(+)

diff --git a/docs/latex/wx/xmldocument.tex b/docs/latex/wx/xmldocument.tex
index d42bda0f8d..c99bdae67c 100644
--- a/docs/latex/wx/xmldocument.tex
+++ b/docs/latex/wx/xmldocument.tex
@@ -92,6 +92,17 @@ Copy constructor.
 
 Virtual destructor. Frees the document root node.
 
+
+\membersection{wxXmlDocument::DetachRoot}\label{wxxmldocumentdetachroot}
+
+\func{wxXmlNode*}{DetachRoot}{\void}
+
+Detaches the document root node and returns it. The document root node will be set to \NULL
+and thus \helpref{IsOk}{wxxmldocumentisok} will return \false after calling this function.
+
+Note that the caller is reponsible for deleting the returned node in order to avoid memory leaks.
+
+
 \membersection{wxXmlDocument::GetEncoding}\label{wxxmldocumentgetencoding}
 
 \constfunc{wxString}{GetEncoding}{\void}
@@ -173,6 +184,8 @@ Sets the enconding of the file which will be used to save the document.
 \func{void}{SetRoot}{\param{wxXmlNode* }{node}}
 
 Sets the root node of this document. Deletes previous root node.
+Use \helpref{DetachRoot}{wxxmlnodedetachroot} and then SetRoot if you want to
+replace the root node without deleting the old document tree.
 
 \membersection{wxXmlDocument::SetVersion}\label{wxxmldocumentsetversion}
 
diff --git a/include/wx/xml/xml.h b/include/wx/xml/xml.h
index 1d7aa31dcd..10ebf5ce3c 100644
--- a/include/wx/xml/xml.h
+++ b/include/wx/xml/xml.h
@@ -208,6 +208,7 @@ public:
     wxString GetFileEncoding() const { return m_fileEncoding; }
 
     // Write-access methods:
+    wxXmlNode *DetachRoot() { wxXmlNode *old=m_root; m_root=NULL; return old; }
     void SetRoot(wxXmlNode *node) { wxDELETE(m_root); m_root = node; }
     void SetVersion(const wxString& version) { m_version = version; }
     void SetFileEncoding(const wxString& encoding) { m_fileEncoding = encoding; }
-- 
2.50.0

