git.lucas.co / cce-ui
GPU-accelerated UI toolkit (Vulkan)
git clone https://git.lucas.co/cce-ui.git

commit7caaa66fe628c635410da20b441bab38ce193616
parent0bfa6ce722
authorLucas Galante <[email protected]>
date2026-08-12 15:46
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,
         }