From 7a5a2a3b0e9309cf03bba9aa305935068679054b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wies=C5=82aw=20=C5=A0olt=C3=A9s?= Date: Sat, 7 Nov 2026 19:39:46 +0100 Subject: [PATCH] FerroUI 4702de41a: theme trimming, size roots and url::Url font keys The FerroUI submodule moves to the latest main, which carries the size work (theme trimming on by default, the trimmed type tables and registrations), with the workspace blocks written by sync-workspace.py and the lock file to match. The embedded font collection takes url::Url keys now. --- Cargo.lock | 19 +++++++++++++--- Cargo.toml | 52 +++++++++++++++++++++++++++++++++++++++++++- FerroUI | 2 +- Solitaire/Cargo.toml | 1 + Solitaire/src/app.rs | 5 ++--- 5 files changed, 71 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9828b4d..b7ecd60 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -408,6 +408,7 @@ dependencies = [ "serde", "serde_json", "tempfile", + "url", ] [[package]] @@ -467,6 +468,7 @@ dependencies = [ "ferroui-harfbuzz", "ferroui-opengl", "ferroui-skia", + "url", "wasm-bindgen", ] @@ -501,6 +503,7 @@ dependencies = [ "ferroui-remote-protocol", "ferroui-system", "rustc-hash", + "url", ] [[package]] @@ -524,6 +527,7 @@ dependencies = [ "ferroui-build", "ferroui-controls", "ferroui-markup-xaml", + "ferroui-system", "sysinfo", ] @@ -533,6 +537,7 @@ version = "0.5.0-preview.1" dependencies = [ "ferroui-base", "ferroui-controls", + "url", ] [[package]] @@ -542,7 +547,9 @@ dependencies = [ "bitflags", "ferroui-base", "ferroui-controls", + "ferroui-system", "futures-util", + "url", "uuid", "zbus", ] @@ -563,6 +570,7 @@ dependencies = [ "ferroui-base", "ferroui-controls", "ferroui-harfbuzz", + "ferroui-system", ] [[package]] @@ -580,6 +588,7 @@ dependencies = [ "ferroui-build-scan", "ferroui-controls", "ferroui-markup", + "url", ] [[package]] @@ -590,6 +599,8 @@ dependencies = [ "ferroui-build-scan", "ferroui-markup", "ferroui-markup-xaml", + "roxmltree", + "url", "xamlx", ] @@ -614,11 +625,11 @@ dependencies = [ "cc", "ferroui-base", "ferroui-controls", - "ferroui-dialogs", "ferroui-metal", "ferroui-microcom", "ferroui-opengl", "microcom-codegen", + "url", ] [[package]] @@ -636,6 +647,7 @@ dependencies = [ name = "ferroui-remote-protocol" version = "0.5.0-preview.1" dependencies = [ + "ferroui-system", "uuid", ] @@ -690,6 +702,7 @@ dependencies = [ "ferroui-vulkan", "microcom-codegen", "mozangle", + "url", "windows-sys", ] @@ -703,8 +716,10 @@ dependencies = [ "ferroui-dialogs", "ferroui-freedesktop", "ferroui-opengl", + "ferroui-system", "ferroui-vulkan", "libc", + "url", "x11-dl", ] @@ -1527,8 +1542,6 @@ checksum = "3a219298ac11a56ea9a6d2120044824d6f01aeb034955e7af7bc16858527deea" [[package]] name = "skia-bindings" version = "0.153.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb325787c91b3f6c34a7c6f2b8a2297b20292d733ca53a08c233e5028aec49af" dependencies = [ "bindgen", "cc", diff --git a/Cargo.toml b/Cargo.toml index 97e5ebd..cc61d83 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,6 +13,33 @@ repository = "https://github.com/FerroUI/Solitaire" [workspace.dependencies] # >>> FerroUI workspace dependencies (written by FerroUI/scripts/apps/sync-workspace.py from FerroUI/Cargo.toml; do not edit) +ferroui-media-camera-windows = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Camera.Windows" } +ferroui-media-video-windows = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Video.Windows" } +ferroui-media-windows = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Windows" } +ferroui-media-camera-linux = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Camera.Linux" } +ferroui-media-video-linux = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Video.Linux" } +ferroui-media-linux = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Linux" } +ferroui-media-video = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Video" } +ferroui-media-camera = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Camera" } +ferroui-media-video-controls = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Video.Controls" } +ferroui-media-video-apple = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Video.Apple" } +ferroui-media-camera-apple = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Camera.Apple" } +ferroui-media-controls = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Controls" } +ferroui-media-apple = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Apple" } +ferroui-media-browser = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Browser" } +ferroui-media-video-browser = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Video.Browser" } +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-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" } +ferroui-media-video-android = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Video.Android" } +ferroui-media-camera-android = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Camera.Android" } +ferroui-media-camera-controls = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Camera.Controls" } +ferroui-media-qr = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Qr", default-features = false } +ferroui-media-qr-android = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Qr.Android" } +ferroui-media-qr-apple = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Qr.Apple" } # The Dock port (docs/porting/dock): its crates and the dependencies only it has. ferrodock-controls-recycling-model = { version = "=0.5.0-preview.1", path = "FerroUI/src/Dock/FerroDock.Controls.Recycling.Model" } ferrodock-controls-recycling-model-ferro = { version = "=0.5.0-preview.1", path = "FerroUI/src/Dock/FerroDock.Controls.Recycling.Model.Ferro" } @@ -193,7 +220,7 @@ wayland-protocols-misc = { version = "=0.3.12", features = ["client"] } jni-sys = { version = "=0.4.1" } paste = "1" cc = "1" -skia-safe = { version = "0.153" } +skia-safe = { version = "=0.153.3" } # The Vello render backend (docs/porting/vello-backend.md, section 2): exact versions, because the # renderers of the Vello project change their interfaces between minor releases. `vello_cpu` without # its default features: its thread pool is added by the backend on targets with threads (the @@ -230,6 +257,9 @@ gif = { version = "=0.14.2", default-features = false, features = ["std"] } vello_gpu = { version = "=0.3.0", default-features = false, features = ["std", "text"] } vello = { version = "=0.11.0", default-features = false, features = ["wgpu"] } wgpu = { version = "=30.0.1", default-features = false, features = ["std", "wgsl", "metal"] } +# The shader translator of `wgpu`, at its version: `ferroui-build` translates the WGSL of the runtime +# shader effects to GLSL ES 3.0 for WebGL2 at build time (its features `wgsl-in` and `glsl-out`). +naga = { version = "=30.0.1", default-features = false } # The version of the `wasm-bindgen` command-line tool on PATH has to be this exact version. wasm-bindgen = "=0.2.129" # The bindings of the WebGL2 renderer of `vello_gpu`, at the versions that belong to that release @@ -277,11 +307,27 @@ lto = false # then shows addresses (docs/binary-size.md, section 4.3). On Windows the executable never holds the # symbols (they are in the PDB beside it), so the setting changes nothing there. Build with the # release profile for a backtrace with names. +# +# Without unwinding (`panic = "abort"`, docs/binary-size.md, section 4.7, #567): a panic ends the +# process, after the panic hook has run. The unwind tables and the landing pads are left out: hello +# world's executable is 21 % smaller. No production path of the framework carries an expected +# error as a panic (docs/porting/panics-as-exceptions.md); what a catch of a panic still isolates +# is a bug, which then ends the process instead of being logged. The development tools that isolate +# the code of the application they inspect (the Designer, the previewer, hot reload, DevTools) are +# built with `dev`, `release` or `dist-unwind`. Cargo ignores the setting for tests, benches, build +# scripts and procedural macros, which always unwind. [profile.dist] inherits = "release" lto = "fat" codegen-units = 1 strip = "symbols" +panic = "abort" + +# The shipped build with unwinding: `dist` with `panic = "unwind"`, for an application that catches +# panics to carry on (a plug-in host, a tool that isolates the code it runs). +[profile.dist-unwind] +inherits = "dist" +panic = "unwind" # The WebAssembly module of the browser (scripts/build-browser.sh): optimised for size, because the # module is downloaded and compiled by every visitor (docs/porting/browser-platform.md, section 18). @@ -354,4 +400,8 @@ opt-level = 3 [profile.browser.package.read-fonts] opt-level = 3 + +[patch.crates-io] +# Pinned source hotfix for Graphite Metal's retained Objective-C objects. +skia-bindings = { path = "FerroUI/external/rust-skia-bindings" } # <<< FerroUI profiles diff --git a/FerroUI b/FerroUI index b753739..4702de4 160000 --- a/FerroUI +++ b/FerroUI @@ -1 +1 @@ -Subproject commit b753739811c34eba24c86ec383232053e914e42e +Subproject commit 4702de41a8b8d66e877788b33ca9af3b40e0a59a diff --git a/Solitaire/Cargo.toml b/Solitaire/Cargo.toml index aebd1fb..05fc942 100644 --- a/Solitaire/Cargo.toml +++ b/Solitaire/Cargo.toml @@ -23,6 +23,7 @@ rand_chacha = "0.9" serde = { version = "1", features = ["derive"] } serde_json = "1" dirs = "6" +url = { workspace = true } tempfile = "3" [[bin]] diff --git a/Solitaire/src/app.rs b/Solitaire/src/app.rs index b77acbc..5847de1 100644 --- a/Solitaire/src/app.rs +++ b/Solitaire/src/app.rs @@ -35,9 +35,8 @@ impl ApplicationImpl for App { ); ferroui::base::media::FontManager::current().add_font_collection(std::rc::Rc::new( ferroui::base::media::fonts::EmbeddedFontCollection::new( - ferroui::base::utilities::Uri::absolute("fonts:Solitaire").expect("font key"), - ferroui::base::utilities::Uri::absolute("ferres://FerroSolitaire/Assets") - .expect("font source"), + url::Url::parse("fonts:Solitaire").expect("font key"), + url::Url::parse("ferres://FerroSolitaire/Assets").expect("font source"), ), )); this.styles().add(FluentTheme::new().as_style());