GPU-accelerated UI toolkit (Vulkan)
git clone https://git.lucas.co/cce-ui.git
fix: InteractiveListItem hover flips report handled — repaint immediately
MouseEnter/MouseLeave mutated the hover state but returned false, so
the demand-driven frame loop never learned a repaint was due: list-row
highlights waited for the next unrelated rebuild. That read as laggy
hover in every ScrollRegion list (system-interface packages/services/
timers rows).
Co-Authored-By: Claude Fable 5 <[email protected]>
src/widget/display/list_item.rs | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/src/widget/display/list_item.rs b/src/widget/display/list_item.rs
index 9f98b82..4164287 100644
--- a/src/widget/display/list_item.rs
+++ b/src/widget/display/list_item.rs
@@ -137,12 +137,15 @@ impl Input for InteractiveListItem {
std::mem::take(&mut self.pressed)
}
Event::MouseEnter => {
+ // Hover flips are visual changes: report them handled so the
+ // demand-driven frame loop repaints now — returning false left
+ // the highlight waiting for the next unrelated rebuild.
self.hovered = true;
- false
+ true
}
Event::MouseLeave => {
self.hovered = false;
- false
+ true
}
_ => false,
}