From d4bcfa974ff31ab25c8e80b2cc65f665b4a82d08 Mon Sep 17 00:00:00 2001 From: Karl Seguin Date: Tue, 24 Mar 2026 07:55:11 +0800 Subject: [PATCH] Only check StyleSheet dirty flag at the start (once) of operation --- src/browser/StyleManager.zig | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/browser/StyleManager.zig b/src/browser/StyleManager.zig index d66162f4..a9fc50cf 100644 --- a/src/browser/StyleManager.zig +++ b/src/browser/StyleManager.zig @@ -199,6 +199,8 @@ fn rebuildIfDirty(self: *StyleManager) !void { // By default only checks display:none. // Walks up the tree to check ancestors. pub fn isHidden(self: *StyleManager, el: *Element, cache: ?*VisibilityCache, options: CheckVisibilityOptions) bool { + self.rebuildIfDirty() catch return false; + var current: ?*Element = el; while (current) |elem| { @@ -283,8 +285,6 @@ fn isElementHidden(self: *StyleManager, el: *Element, options: CheckVisibilityOp return false; } - self.rebuildIfDirty() catch return false; - // Helper to check a single rule const Ctx = struct { display_none: *?bool, @@ -378,6 +378,8 @@ fn isElementHidden(self: *StyleManager, el: *Element, options: CheckVisibilityOp /// Checks inline style first - if set, skips stylesheet lookup. /// Walks up the tree to check ancestors. pub fn hasPointerEventsNone(self: *StyleManager, el: *Element, cache: ?*PointerEventsCache) bool { + self.rebuildIfDirty() catch return false; + var current: ?*Element = el; while (current) |elem| { @@ -417,9 +419,6 @@ fn elementHasPointerEventsNone(self: *StyleManager, el: *Element) bool { return false; } - // Check stylesheet rules - self.rebuildIfDirty() catch return false; - var result: ?bool = null; var best_priority: u64 = 0;