From f3368f159d646a2a1a87b1002a9d5583beb5f17f Mon Sep 17 00:00:00 2001 From: Martin Marmsoler Date: Sat, 3 Oct 2020 20:50:08 +0200 Subject: [PATCH] Fix problem that not all childs were added to the xml document --- sources/editor/graphicspart/partterminal.cpp | 2 +- sources/qetgraphicsitem/terminal.cpp | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/sources/editor/graphicspart/partterminal.cpp b/sources/editor/graphicspart/partterminal.cpp index 2b0ca4d8b..726c5574e 100644 --- a/sources/editor/graphicspart/partterminal.cpp +++ b/sources/editor/graphicspart/partterminal.cpp @@ -75,7 +75,7 @@ QDomElement PartTerminal::toXml(QDomDocument &xml_document) const { // Do not store terminal data in its own child QDomElement terminalDataElement = d->toXml(xml_document); for (int i=0; i < terminalDataElement.childNodes().length(); i++) { - qdo.appendChild(terminalDataElement.childNodes().at(i)); + qdo.appendChild(terminalDataElement.childNodes().at(i).cloneNode()); // cloneNode() is important, otherwise no deep clone is made } return qdo; diff --git a/sources/qetgraphicsitem/terminal.cpp b/sources/qetgraphicsitem/terminal.cpp index 127cf2241..01ced29ad 100644 --- a/sources/qetgraphicsitem/terminal.cpp +++ b/sources/qetgraphicsitem/terminal.cpp @@ -734,9 +734,11 @@ QDomElement Terminal::toXml(QDomDocument &doc) const { // Do not store terminal data in its own child QDomElement terminalDataElement = d->toXml(doc); - int y = terminalDataElement.().length(); // TODO: seems to be not correct! - for (int i=0; i < terminalDataElement.childNodes().length(); i++) { - qdo.appendChild(terminalDataElement.childNodes().at(i)); + + int childsCount = terminalDataElement.childNodes().count(); + for (int i=0; i < childsCount; i++) { + QDomNode node = terminalDataElement.childNodes().at(i).cloneNode(); // cloneNode() is important, otherwise no deep clone is made + qdo.appendChild(node); } return(qdo);