---- render a full UI ---- rendering 9OpenClose [=0000000000000000 ]=0000000000000000 ^=0000000000000000 <=0000000000000000 >=0000000000000000 >>> new element >>> push [1] 12UIBoxElement [=0000000000000000 ]=0000000000000000 ^=0000000000732330 <=0000000000000000 >=0000000000000000 >>> new element >>> make 8Checkbox open:n [=00000000007323D0 ]=00000000007323D0 ^=0000000000732330 <=0000000000000000 >=0000000000000000 >>> new element >>> make 6Button [=00000000007323D0 ]=00000000007534A0 ^=0000000000732330 <=0000000000000000 >=0000000000000000 >>> new element >>> make 6Button pop [1] 12UIBoxElement rendering 6Button [=0000000000000000 ]=0000000000000000 ^=0000000000732390 <=00000000007534A0 >=0000000000000000 >>> new element >>> push [1] 12UIBoxElement [=0000000000000000 ]=0000000000000000 ^=00000000007534F0 <=0000000000000000 >=0000000000000000 >>> new element >>> push [2] 13UITextElement pop [2] 13UITextElement pop [1] 12UIBoxElement rendering 6Button [=0000000000000000 ]=0000000000000000 ^=0000000000732390 <=00000000007323D0 >=00000000007534F0 >>> new element >>> push [1] 12UIBoxElement [=0000000000000000 ]=0000000000000000 ^=00000000007534A0 <=0000000000000000 >=0000000000000000 >>> new element >>> push [2] 13UITextElement pop [2] 13UITextElement pop [1] 12UIBoxElement rendering 8Checkbox [=0000000000000000 ]=0000000000000000 ^=0000000000732390 <=0000000000000000 >=00000000007534A0 >>> new element >>> push [1] 12UIBoxElement [=0000000000000000 ]=0000000000000000 ^=00000000007323D0 <=0000000000000000 >=0000000000000000 >>> new element >>> push [2] 13UITextElement pop [2] 13UITextElement pop [1] 12UIBoxElement - allocs:11 new:11 delete:0 9OpenClose - node 12UIBoxElement - element 8Checkbox - node 12UIBoxElement - element 13UITextElement - element 6Button - node 12UIBoxElement - element 13UITextElement - element 6Button - node 12UIBoxElement - element 13UITextElement - element ---- render it again (and expect reuse) ---- rendering 9OpenClose /// match streak /// push [1] 12UIBoxElement /// match streak /// make 8Checkbox open:n /// match streak /// make 6Button /// match streak /// make 6Button pop [1] 12UIBoxElement rendering 6Button /// match streak /// push [1] 12UIBoxElement /// match streak /// push [2] 13UITextElement pop [2] 13UITextElement pop [1] 12UIBoxElement rendering 6Button /// match streak /// push [1] 12UIBoxElement /// match streak /// push [2] 13UITextElement pop [2] 13UITextElement pop [1] 12UIBoxElement rendering 8Checkbox /// match streak /// push [1] 12UIBoxElement /// match streak /// push [2] 13UITextElement pop [2] 13UITextElement pop [1] 12UIBoxElement - allocs:11 new:11 delete:0 9OpenClose - node 12UIBoxElement - element 8Checkbox - node 12UIBoxElement - element 13UITextElement - element 6Button - node 12UIBoxElement - element 13UITextElement - element 6Button - node 12UIBoxElement - element 13UITextElement - element ---- paint ---- /-----------------\ /-----------------\ [O] \-----------------/ /-----------------\ [Open] \-----------------/ /-----------------\ [Close] \-----------------/ \-----------------/ ---- pretend a click happened (OnClick checkbox, then ProcessNodeRenderStack) ---- checkbox was toggled rendering 9OpenClose /// match streak /// push [1] 12UIBoxElement /// match streak /// make 8Checkbox open:Y /// match streak /// make 6Button /// match streak /// make 6Button [=00000000007323D0 ]=00000000007534F0 ^=0000000000732330 <=0000000000000000 >=0000000000000000 >>> new element >>> push [2] 12UIBoxElement [=0000000000000000 ]=0000000000000000 ^=0000000000732390 <=00000000007534F0 >=0000000000000000 >>> new element >>> push [3] 13UITextElement pop [3] 13UITextElement pop [2] 12UIBoxElement pop [1] 12UIBoxElement rendering 6Button /// match streak /// push [1] 12UIBoxElement /// match streak /// push [2] 13UITextElement pop [2] 13UITextElement pop [1] 12UIBoxElement rendering 6Button /// match streak /// push [1] 12UIBoxElement /// match streak /// push [2] 13UITextElement pop [2] 13UITextElement pop [1] 12UIBoxElement rendering 8Checkbox /// match streak /// push [1] 12UIBoxElement /// match streak /// push [2] 13UITextElement pop [2] 13UITextElement pop [1] 12UIBoxElement - allocs:13 new:13 delete:0 ---- paint again (changed state) ---- /-----------------\ /-----------------\ [X] \-----------------/ /-----------------\ [Open] \-----------------/ /-----------------\ [Close] \-----------------/ /-----------------\ [It is open!] \-----------------/ \-----------------/ ---- delete the whole UI ---- deleting 0000000000732330 deleting 0000000000732390 deleting 00000000007536C0 deleting 0000000000753700 deleting 00000000007534F0 deleting 0000000000753540 deleting 0000000000753580 deleting 00000000007534A0 deleting 00000000007535C0 deleting 0000000000753600 deleting 00000000007323D0 deleting 0000000000753640 deleting 0000000000753680 end: - allocs:0 new:13 delete:13