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(); d->m_pos = pos();
QDomDocument doc = e.ownerDocument(); 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; const QString& prefix = QString()) const override;
void fromSettings(QSettings &settings, void fromSettings(QSettings &settings,
const QString& = QString()) override; 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 bool valideXml(const QDomElement &xml_element);
static QString typeToString(TerminalData::Type type); static QString typeToString(TerminalData::Type type);
static TerminalData::Type typeFromString(const QString &string); 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 // must be public, because this class is a private member
// of PartTerminal/Terminal and they must access this data // of PartTerminal/Terminal and they must access this data
public: 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. // 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; QPointF tempPos = d->m_pos;
d->m_pos = dock_elmt_; d->m_pos = dock_elmt_;
d->toXmlPriv(qdo); // TerminalData QDomDocument doc = qdo.ownerDocument();
QDomElement terminalData = d->toXml(doc); // TerminalData
d->m_pos = tempPos; 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));
// }
} }
/** /**