Fix bug with pruning stale nodes
This commit is contained in:
@@ -116,6 +116,8 @@ BzUI *bzUICreate() {
|
|||||||
ui->borderStyles = bzArrayCreate(BzUIBorderStyle, 10);
|
ui->borderStyles = bzArrayCreate(BzUIBorderStyle, 10);
|
||||||
ui->spriteStyles = bzArrayCreate(BzUISpriteStyle, 10);
|
ui->spriteStyles = bzArrayCreate(BzUISpriteStyle, 10);
|
||||||
|
|
||||||
|
ui->currFrame = 0;
|
||||||
|
|
||||||
// 10kb should be enough
|
// 10kb should be enough
|
||||||
ui->strArena = bzStackAllocCreate(10240);
|
ui->strArena = bzStackAllocCreate(10240);
|
||||||
|
|
||||||
@@ -165,7 +167,6 @@ void bzUIBegin(BzUI *ui, i32 width, i32 height) {
|
|||||||
|
|
||||||
bzStackAllocReset(&ui->strArena);
|
bzStackAllocReset(&ui->strArena);
|
||||||
|
|
||||||
ui->currFrame++;
|
|
||||||
ui->root->lastFrame = ui->currFrame;
|
ui->root->lastFrame = ui->currFrame;
|
||||||
ui->keyIdCount = 1;
|
ui->keyIdCount = 1;
|
||||||
}
|
}
|
||||||
@@ -349,7 +350,7 @@ static void pruneStale(BzUI *ui, BzUINode *node) {
|
|||||||
BzUINode *last = NULL;
|
BzUINode *last = NULL;
|
||||||
|
|
||||||
while (child != NULL) {
|
while (child != NULL) {
|
||||||
if (child->lastFrame != node->lastFrame) {
|
if (child->lastFrame != ui->currFrame) {
|
||||||
BzUINode *next = child->next;
|
BzUINode *next = child->next;
|
||||||
if (child->prev)
|
if (child->prev)
|
||||||
child->prev->next = next;
|
child->prev->next = next;
|
||||||
@@ -479,6 +480,8 @@ void bzUIEnd(BzUI *ui) {
|
|||||||
calculatePositions(ui, ui->root, 0, 0);
|
calculatePositions(ui, ui->root, 0, 0);
|
||||||
updateNodeInteraction(ui, ui->root, GetMousePosition());
|
updateNodeInteraction(ui, ui->root, GetMousePosition());
|
||||||
renderNode(ui, ui->root);
|
renderNode(ui, ui->root);
|
||||||
|
|
||||||
|
ui->currFrame++;
|
||||||
}
|
}
|
||||||
|
|
||||||
BzUIKey bzUIGetUniqueKey(BzUI *ui) {
|
BzUIKey bzUIGetUniqueKey(BzUI *ui) {
|
||||||
|
|||||||
Reference in New Issue
Block a user