From a196dd9b3a1cb0cb045d7a0dd4f53a1213fb211e Mon Sep 17 00:00:00 2001 From: Aleksander Date: Tue, 6 Jan 2026 00:06:06 +0100 Subject: [PATCH] wgui: windowing: `close_if_clicked_outside` support, context menus --- Cargo.toml | 11 + dash-frontend/src/frontend.rs | 7 +- uidev/assets/gui/various_widgets.xml | 9 +- uidev/src/testbed/testbed_generic.rs | 75 ++++++- wgui/assets/wgui/context_menu.xml | 16 ++ wgui/src/components/button.rs | 20 +- wgui/src/components/radio_group.rs | 2 - wgui/src/parser/component_button.rs | 4 +- wgui/src/parser/mod.rs | 3 +- wgui/src/windowing.rs | 200 ------------------ wgui/src/windowing/context_menu.rs | 114 ++++++++++ wgui/src/windowing/mod.rs | 2 + wgui/src/windowing/window.rs | 301 +++++++++++++++++++++++++++ 13 files changed, 541 insertions(+), 223 deletions(-) create mode 100644 wgui/assets/wgui/context_menu.xml delete mode 100644 wgui/src/windowing.rs create mode 100644 wgui/src/windowing/context_menu.rs create mode 100644 wgui/src/windowing/mod.rs create mode 100644 wgui/src/windowing/window.rs diff --git a/Cargo.toml b/Cargo.toml index 067e786..6e6172a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,6 +5,17 @@ strip = "none" debug-assertions = true incremental = true +# to be used in case if you don't want debug features +# (faster incremental compilation, about 15x smaller binary size compared to dev) +# --profile=plain +[profile.plain] +inherits = "dev" +opt-level = 1 +debug = false +strip = true +debug-assertions = true +incremental = true + [profile.release-with-debug] inherits = "release" debug = true diff --git a/dash-frontend/src/frontend.rs b/dash-frontend/src/frontend.rs index 9c2e80f..6e7646e 100644 --- a/dash-frontend/src/frontend.rs +++ b/dash-frontend/src/frontend.rs @@ -12,7 +12,7 @@ use wgui::{ parser::{Fetchable, ParseDocumentParams, ParserState}, task::Tasks, widget::{label::WidgetLabel, rectangle::WidgetRectangle}, - windowing::{WguiWindow, WguiWindowParams, WguiWindowParamsExtra, WguiWindowPlacement}, + windowing::window::{WguiWindow, WguiWindowParams, WguiWindowParamsExtra, WguiWindowPlacement}, }; use wlx_common::{audio, dash_interface::BoxDashInterface, timestep::Timestep}; @@ -379,13 +379,14 @@ impl Frontend { fn action_show_audio_settings(&mut self) -> anyhow::Result<()> { self.window_audio_settings.open(&mut WguiWindowParams { - globals: self.globals.clone(), + globals: &self.globals, position: Vec2::new(64.0, 64.0), layout: &mut self.layout, - title: Translation::from_translation_key("AUDIO.SETTINGS"), extra: WguiWindowParamsExtra { fixed_width: Some(400.0), placement: WguiWindowPlacement::BottomLeft, + close_if_clicked_outside: true, + title: Some(Translation::from_translation_key("AUDIO.SETTINGS")), ..Default::default() }, })?; diff --git a/uidev/assets/gui/various_widgets.xml b/uidev/assets/gui/various_widgets.xml index d13a5e0..f49cd79 100644 --- a/uidev/assets/gui/various_widgets.xml +++ b/uidev/assets/gui/various_widgets.xml @@ -25,8 +25,8 @@ + +