Fix bug with pruning stale nodes

This commit is contained in:
2023-12-29 19:11:56 +01:00
parent cc66f15131
commit e852fcc791

View File

@@ -116,6 +116,8 @@ BzUI *bzUICreate() {
ui->borderStyles = bzArrayCreate(BzUIBorderStyle, 10);
ui->spriteStyles = bzArrayCreate(BzUISpriteStyle, 10);
ui->currFrame = 0;
// 10kb should be enough
ui->strArena = bzStackAllocCreate(10240);
@@ -165,7 +167,6 @@ void bzUIBegin(BzUI *ui, i32 width, i32 height) {
bzStackAllocReset(&ui->strArena);
ui->currFrame++;
ui->root->lastFrame = ui->currFrame;
ui->keyIdCount = 1;
}
@@ -349,7 +350,7 @@ static void pruneStale(BzUI *ui, BzUINode *node) {
BzUINode *last = NULL;
while (child != NULL) {
if (child->lastFrame != node->lastFrame) {
if (child->lastFrame != ui->currFrame) {
BzUINode *next = child->next;
if (child->prev)
child->prev->next = next;
@@ -479,6 +480,8 @@ void bzUIEnd(BzUI *ui) {
calculatePositions(ui, ui->root, 0, 0);
updateNodeInteraction(ui, ui->root, GetMousePosition());
renderNode(ui, ui->root);
ui->currFrame++;
}
BzUIKey bzUIGetUniqueKey(BzUI *ui) {