From 5206f778a8c650594743d8d6c2ede83ce07cefdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wies=C5=82aw=20=C5=A0olt=C3=A9s?= Date: Sat, 7 Nov 2026 21:05:48 +0100 Subject: [PATCH] FerroUI 0c0ea2a72, and a double-tap window for loaded test runs The FerroUI submodule moves to main 0c0ea2a72 (control themes as tables, type identities, newer JDKs), with the workspace blocks written by sync-workspace.py. The headless platform stamps input with wall-clock time, and the default double-tap window is 500 ms; with the whole suite running in parallel the two clicks of a test's double click could fall outside it, and the page rename test failed now and then. The test fixture binds platform settings with a 5 s double-tap window in its locator scope. --- Cargo.lock | 9 ++++ Cargo.toml | 1 + FerroUI | 2 +- .../ferrodesign-app/src/shell/fields_tests.rs | 45 +++++++++++++++++++ 4 files changed, 56 insertions(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index d7cbbf5..f4fdaf9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -857,6 +857,14 @@ dependencies = [ "uuid", ] +[[package]] +name = "ferroui-render3d" +version = "0.5.0-preview.1" +dependencies = [ + "ferroui-base", + "wgpu", +] + [[package]] name = "ferroui-system" version = "0.5.0-preview.1" @@ -883,6 +891,7 @@ dependencies = [ "ferroui-controls", "ferroui-metal", "ferroui-opengl", + "ferroui-render3d", "fontique", "gif", "glifo", diff --git a/Cargo.toml b/Cargo.toml index 78c6d81..e9a95e4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -31,6 +31,7 @@ ferroui-media-video-browser = { version = "=0.5.0-preview.1", path = "FerroUI/sr ferroui-media-camera-browser = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Camera.Browser" } ferroui-media = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media" } ferroui-media3d = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media3D" } +ferroui-render3d = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Rendering3D" } ferroui-media-metal = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Metal" } ferroui-media-opengl = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.OpenGL" } ferroui-media-android = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Android" } diff --git a/FerroUI b/FerroUI index 4702de4..0c0ea2a 160000 --- a/FerroUI +++ b/FerroUI @@ -1 +1 @@ -Subproject commit 4702de41a8b8d66e877788b33ca9af3b40e0a59a +Subproject commit 0c0ea2a72f1a3fce5693991efb79631dae5e6603 diff --git a/crates/ferrodesign-app/src/shell/fields_tests.rs b/crates/ferrodesign-app/src/shell/fields_tests.rs index 486dbd1..0bacd6a 100644 --- a/crates/ferrodesign-app/src/shell/fields_tests.rs +++ b/crates/ferrodesign-app/src/shell/fields_tests.rs @@ -73,6 +73,11 @@ impl Fixture { ..Default::default() }) .setup_without_starting(); + // Headless input is stamped with wall-clock time; a long double-tap window keeps a + // test's double click a double click while the whole suite runs in parallel. + ferroui_base::FerroLocator::current_mutable() + .bind::() + .to_constant(Rc::new(TestPlatformSettings::default())); builder .instance() .unwrap() @@ -745,3 +750,43 @@ fn minimized_phone_keeps_selection_on_canvas_and_restores_drawer_after_hiding() assert!(visible("CompactHeader") && visible("LeftPanel")); assert_eq!(fixture.json(), before); } + +/// The headless platform settings with a double-tap window long enough for a loaded test run. +#[derive(Default)] +struct TestPlatformSettings(ferroui_base::platform::DefaultPlatformSettings); + +impl ferroui_base::platform::IPlatformSettings for TestPlatformSettings { + fn get_tap_size(&self, kind: ferroui_base::input::PointerType) -> ferroui_base::Size { + self.0.get_tap_size(kind) + } + fn get_double_tap_size(&self, kind: ferroui_base::input::PointerType) -> ferroui_base::Size { + self.0.get_double_tap_size(kind) + } + fn get_double_tap_time(&self, _kind: ferroui_base::input::PointerType) -> std::time::Duration { + std::time::Duration::from_secs(5) + } + fn hold_wait_duration(&self) -> std::time::Duration { + self.0.hold_wait_duration() + } + fn hotkey_configuration(&self) -> Rc { + self.0.hotkey_configuration() + } + fn preferred_application_language(&self) -> String { + self.0.preferred_application_language() + } + fn get_color_values(&self) -> ferroui_base::platform::PlatformColorValues { + self.0.get_color_values() + } + fn color_values_changed( + &self, + handler: Rc, + ) -> Rc { + self.0.color_values_changed(handler) + } + fn preferred_application_language_changed( + &self, + handler: Rc, + ) -> Rc { + self.0.preferred_application_language_changed(handler) + } +}