Browse Source

Fehler in Render und Message weitergabe Reihenfolge in der UIML View. Objekte die zuletzt hinzugefügt werden sind jetzt vor allen anderen sichtbar

Kolja Strohm 5 years ago
parent
commit
48a5d20f58
3 changed files with 15 additions and 3 deletions
  1. 4 3
      UIMLView.cpp
  2. 8 0
      XML.cpp
  3. 3 0
      XML.h

+ 4 - 3
UIMLView.cpp

@@ -442,7 +442,7 @@ Text UIMLView::addMember( Text uiml )
 {
     XML::Element *e = new XML::Element( uiml );
     if( parseElement( e ) )
-        dom->addChild( e );
+        dom->addChildAtFront( e );
     return e->getAttributeValue( "id" );
 }
 
@@ -542,9 +542,10 @@ void UIMLView::render( Bild &rObj )
     ZeichnungHintergrund::render( rObj );
     if( dom )
     {
-        for( auto i = dom->getChilds(); i; i++ )
+        for( int i = dom->getChildCount() - 1; i >= 0; i-- )
         { // TODO render elements backwards
-            Zeichnung *z = members->z( i->getAttributeValue( "id" ) );
+            XML::Element *e = dom->zChild( i );
+            Zeichnung *z = members->z( e->getAttributeValue( "id" ) );
             if( z )
                 z->render( rObj );
         }

+ 8 - 0
XML.cpp

@@ -265,6 +265,14 @@ void Element::addChild( Element *child )
     children->add( child );
 }
 
+// fügt ein child hinzu
+//  child: Das neue Child Element
+void Element::addChildAtFront( Element *child )
+{
+    child->parent = this;
+    children->add( child, 0 );
+}
+
 // entfernt ein child
 //  zChild: das zu entfernende Child
 void Element::removeChild( Element *child )

+ 3 - 0
XML.h

@@ -42,6 +42,9 @@ namespace Framework
             // fügt ein child hinzu
             //  child: Das neue Child Element
             __declspec( dllexport ) void addChild( Element *child );
+            // fügt ein child hinzu
+            //  child: Das neue Child Element
+            __declspec( dllexport ) void addChildAtFront( Element *child );
             // entfernt ein child
             //  zChild: das zu entfernende Child
             __declspec( dllexport ) void removeChild( Element *child );