store terminalData in the terminal tag. Fixes the drag problem from the collection into the diagram. The problem was that some tags missed and therefore the creation of the element for dragging was unsuccessful

This commit is contained in:
Martin Marmsoler
2021-03-14 08:29:26 +01:00
parent d805fb9ced
commit 0fbadc727d
3 changed files with 26 additions and 4 deletions

View File

@@ -78,7 +78,17 @@ void PartTerminal::toXmlPriv(QDomElement& e) const {
d->m_pos = pos();
QDomDocument doc = e.ownerDocument();
e.appendChild(d -> toXml(doc));
QDomElement terminalData = d -> toXml(doc);
// Copy everything from terminalData to terminal
for (int i=0; i < terminalData.attributes().count(); i++) {
QDomAttr attr = terminalData.attributes().item(i).toAttr();
e.setAttribute(attr.name(), attr.value());
}
// for (int i=0; i < terminalData.childNodes().count(); i++) {
// e.appendChild(terminalData.childNodes().at(i));
// }
}

View File

@@ -56,14 +56,16 @@ class TerminalData : public PropertiesInterface
const QString& prefix = QString()) const override;
void fromSettings(QSettings &settings,
const QString& = QString()) override;
void toXmlPriv(QDomElement &xml_element) const override;
bool fromXmlPriv(const QDomElement &xml_element) override;
static bool valideXml(const QDomElement &xml_element);
static QString typeToString(TerminalData::Type type);
static TerminalData::Type typeFromString(const QString &string);
private:
void toXmlPriv(QDomElement &xml_element) const override;
bool fromXmlPriv(const QDomElement &xml_element) override;
// must be public, because this class is a private member
// of PartTerminal/Terminal and they must access this data
public:

View File

@@ -771,8 +771,18 @@ void Terminal::toXmlPriv(QDomElement &qdo) const
// Bad hack. The problem is that in the diagrams the terminal is described by the position and in the Collection by the dock.
QPointF tempPos = d->m_pos;
d->m_pos = dock_elmt_;
d->toXmlPriv(qdo); // TerminalData
QDomDocument doc = qdo.ownerDocument();
QDomElement terminalData = d->toXml(doc); // TerminalData
d->m_pos = tempPos;
// Copy everything from terminalData to terminal
for (int i=0; i < terminalData.attributes().count(); i++) {
QDomAttr attr = terminalData.attributes().item(i).toAttr();
qdo.setAttribute(attr.name(), attr.value());
}
// for (int i=0; i < terminalData.childNodes().count(); i++) {
// qdo.appendChild(terminalData.childNodes().at(i));
// }
}
/**