From a9048ddfabb9c8ffc3dcd109f21a7b9d4dbe134a Mon Sep 17 00:00:00 2001 From: dotCooCoo Date: Mon, 2 Nov 2026 22:44:40 -0800 Subject: [PATCH] Type: leave wheel input to replacement Artboard controls --- crates/ui-egui/src/font_menu.rs | 1 + crates/ui-egui/tests/font_wheel.rs | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/crates/ui-egui/src/font_menu.rs b/crates/ui-egui/src/font_menu.rs index 567e260a6..953be1a56 100644 --- a/crates/ui-egui/src/font_menu.rs +++ b/crates/ui-egui/src/font_menu.rs @@ -57,6 +57,7 @@ impl WheelOwner { return false; } let panel = match self { + Self::Control | Self::ControlPopover(_) | Self::Properties if app.session.tool_id() == "artboard" => return false, Self::Control => return app.ui.control_bar && app.ui.screen_mode < 2, Self::ControlPopover(anchor) => { return app.ui.control_bar && app.ui.screen_mode < 2 && widgets::popover_is_open(ctx, anchor); diff --git a/crates/ui-egui/tests/font_wheel.rs b/crates/ui-egui/tests/font_wheel.rs index 7f8e0353c..5c27c1db6 100644 --- a/crates/ui-egui/tests/font_wheel.rs +++ b/crates/ui-egui/tests/font_wheel.rs @@ -22,6 +22,23 @@ fn deselecting_type_leaves_the_missing_control_fields_wheel_available() { assert!(control_wheel_available_after("select.set", json!({"ids": []}))); } +#[test] +fn artboard_controls_leave_replaced_font_fields_wheel_available() { + let (ctx, mut app) = selected_type_with_control(); + let mut texts = Vec::new(); + for _ in 0..8 { + texts = frame(&mut app, &ctx, vec![]); + } + let fields: Vec<_> = texts.iter().filter(|(t, _)| t == "Inter").map(|(_, point)| *point).collect(); + assert_eq!(fields.len(), 2, "Control and Properties each show a font field"); + app.select_tool("artboard"); + for point in fields { + let mut raw = wheel_input(point); + app.raw_input_hook(&ctx, &mut raw); + assert!(raw.events.iter().any(|e| matches!(e, Event::MouseWheel { .. })), "the Artboard tool replaces this font field"); + } +} + #[test] fn the_control_character_popover_keeps_its_visible_font_wheel() { let (ctx, mut app) = selected_type_with_control();