|
@@ -890,16 +890,21 @@ bool Framework::UIMLFrame::updateElement(
|
|
|
{
|
|
|
Fenster* f = dynamic_cast<Fenster*>(&z);
|
|
|
if (!f) return false;
|
|
|
- for (auto member = f->getMembers().begin(); member; member++)
|
|
|
+ for (auto member = f->getMembers().begin(); member; )
|
|
|
{ // remove all members that are not in the xml
|
|
|
if (!element
|
|
|
.selectChildsByAttribute(
|
|
|
"id", generalFactory.getZeichnungId(*member.val()))
|
|
|
.exists())
|
|
|
{
|
|
|
+ generalFactory.removeZeichnung(*member.val());
|
|
|
member.remove();
|
|
|
f->setRender();
|
|
|
}
|
|
|
+ else
|
|
|
+ {
|
|
|
+ member++;
|
|
|
+ }
|
|
|
}
|
|
|
int index = 0;
|
|
|
for (auto i = element.getChilds(); i; i++)
|
|
@@ -909,6 +914,10 @@ bool Framework::UIMLFrame::updateElement(
|
|
|
if (!id.getLength() || !z || f->getMembers().indexOf(z) < 0
|
|
|
|| !generalFactory.updateElement(*i.val(), *z, generalFactory))
|
|
|
{
|
|
|
+ if (f->getMembers().indexOf(z) >= 0)
|
|
|
+ {
|
|
|
+ f->removeMember(z);
|
|
|
+ }
|
|
|
if (z) generalFactory.removeZeichnung(*z);
|
|
|
z = generalFactory.parseElement(*i.val(), generalFactory);
|
|
|
if (z) f->addMember(z);
|