From c21a6105e7710d944fc83652cf90a954fb9074df Mon Sep 17 00:00:00 2001 From: multiplex55 <6619098+multiplex55@users.noreply.github.com> Date: Thu, 8 Jan 2026 19:55:28 -0500 Subject: [PATCH 1/3] Adjust dashboard scroll viewport sizing --- src/dashboard/dashboard.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/dashboard/dashboard.rs b/src/dashboard/dashboard.rs index 7f088349..74916fc8 100644 --- a/src/dashboard/dashboard.rs +++ b/src/dashboard/dashboard.rs @@ -334,10 +334,9 @@ impl Dashboard { SCROLL_VISIBILITY_RECORDS.lock().unwrap().push(visibility); scroll_area - .show_viewport(ui, |ui, _viewport| { - ui.set_clip_rect(slot_clip); + .show_viewport(ui, |ui, viewport| { + ui.set_clip_rect(slot_clip.intersect(viewport)); ui.set_min_height(body_height); - ui.set_max_height(body_height); Self::render_widget_content(slot, ui, ctx, activation) }) .inner From e298165664757cd7e76a7dc6ca53657b04269753 Mon Sep 17 00:00:00 2001 From: multiplex55 <6619098+multiplex55@users.noreply.github.com> Date: Thu, 8 Jan 2026 20:07:13 -0500 Subject: [PATCH 2/3] Adjust dashboard clip rect test expectations --- src/dashboard/dashboard.rs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/dashboard/dashboard.rs b/src/dashboard/dashboard.rs index 74916fc8..91cc2177 100644 --- a/src/dashboard/dashboard.rs +++ b/src/dashboard/dashboard.rs @@ -533,8 +533,12 @@ mod tests { let records = take_records(); assert_eq!(records.len(), 1); let record = records[0]; - let expected_clip = egui::Rect::from_min_size(egui::Pos2::ZERO, egui::vec2(240.0, 180.0)); - assert_eq!(record.clip, expected_clip); + let slot_rect = + egui::Rect::from_min_size(egui::Pos2::ZERO, egui::vec2(240.0, 180.0)); + assert!(record.clip.min.x >= slot_rect.min.x - f32::EPSILON); + assert!(record.clip.min.y >= slot_rect.min.y - f32::EPSILON); + assert!(record.clip.max.x <= slot_rect.max.x + f32::EPSILON); + assert!(record.clip.max.y <= slot_rect.max.y + f32::EPSILON); } #[test] @@ -602,8 +606,11 @@ mod tests { let records = take_records(); assert_eq!(records.len(), 1); let record = records[0]; - let expected_clip = egui::Rect::from_min_size(egui::Pos2::ZERO, egui::vec2(200.0, 80.0)); - assert_eq!(record.clip, expected_clip); + let slot_rect = egui::Rect::from_min_size(egui::Pos2::ZERO, egui::vec2(200.0, 80.0)); + assert!(record.clip.min.x >= slot_rect.min.x - f32::EPSILON); + assert!(record.clip.min.y >= slot_rect.min.y - f32::EPSILON); + assert!(record.clip.max.x <= slot_rect.max.x + f32::EPSILON); + assert!(record.clip.max.y <= slot_rect.max.y + f32::EPSILON); assert_eq!( take_scroll_visibilities(), vec![ScrollBarVisibility::VisibleWhenNeeded] From f2f563ea2a9d14be6615afac39f2d2173adf43f1 Mon Sep 17 00:00:00 2001 From: multiplex55 <6619098+multiplex55@users.noreply.github.com> Date: Thu, 8 Jan 2026 20:14:49 -0500 Subject: [PATCH 3/3] Fix scroll viewport clip handling --- src/dashboard/dashboard.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/dashboard/dashboard.rs b/src/dashboard/dashboard.rs index 91cc2177..19673d87 100644 --- a/src/dashboard/dashboard.rs +++ b/src/dashboard/dashboard.rs @@ -334,8 +334,8 @@ impl Dashboard { SCROLL_VISIBILITY_RECORDS.lock().unwrap().push(visibility); scroll_area - .show_viewport(ui, |ui, viewport| { - ui.set_clip_rect(slot_clip.intersect(viewport)); + .show_viewport(ui, |ui, _viewport| { + ui.set_clip_rect(ui.clip_rect().intersect(slot_clip)); ui.set_min_height(body_height); Self::render_widget_content(slot, ui, ctx, activation) })