dash and wgui sounds

This commit is contained in:
Aleksander
2026-01-03 15:00:31 +01:00
parent 383bf3b11f
commit feba52c28f
34 changed files with 258 additions and 96 deletions

View File

@@ -16,7 +16,7 @@ pub static ANCHOR_NAME: LazyLock<Arc<str>> = LazyLock::new(|| Arc::from("anchor"
pub fn create_anchor(app: &mut AppState) -> anyhow::Result<OverlayWindowConfig> {
let mut panel = GuiPanel::new_from_template(app, "gui/anchor.xml", (), Default::default())?;
panel.update_layout()?;
panel.update_layout(app)?;
Ok(OverlayWindowConfig {
name: ANCHOR_NAME.clone(),
@@ -41,7 +41,7 @@ pub static GRAB_HELP_NAME: LazyLock<Arc<str>> = LazyLock::new(|| Arc::from("grab
pub fn create_grab_help(app: &mut AppState) -> anyhow::Result<OverlayWindowConfig> {
let mut panel = GuiPanel::new_from_template(app, "gui/grab-help.xml", (), Default::default())?;
panel.update_layout()?;
panel.update_layout(app)?;
let id_watch = panel.parser_state.data.get_widget_id("grabbing_watch")?;
let id_static = panel.parser_state.data.get_widget_id("grabbing_static")?;

View File

@@ -42,7 +42,7 @@ pub fn create_custom(app: &mut AppState, name: Arc<str>) -> Option<OverlayWindow
.ok()?;
panel
.update_layout()
.update_layout(app)
.inspect_err(|e| log::warn!("Error layouting '{name}': {e:?}"))
.ok()?;

View File

@@ -1,5 +1,5 @@
use dash_frontend::{
frontend,
frontend::{self, FrontendUpdateParams},
settings::{self, SettingsIO},
};
use glam::{Affine2, Affine3A, Vec2, vec2, vec3};
@@ -27,6 +27,7 @@ use wlx_common::{
};
use crate::{
app_misc,
backend::{
input::{Haptics, HoverResult, PointerHit, PointerMode},
task::{OverlayTask, PlayspaceTask, TaskType},
@@ -103,10 +104,13 @@ impl DashFrontend {
let settings = SimpleSettingsIO::new();
let interface = DashInterfaceLive::new();
let frontend = frontend::Frontend::new(frontend::InitParams {
let mut frontend = frontend::Frontend::new(frontend::InitParams {
settings: Box::new(settings),
interface: Box::new(interface),
})?;
frontend.play_startup_sound(&mut app.audio_system, &mut app.audio_sample_player)?;
let context = WguiContext::new(&mut app.wgui_shared, 1.0)?;
Ok(Self {
inner: frontend,
@@ -119,12 +123,14 @@ impl DashFrontend {
}
fn update(&mut self, app: &mut AppState, timestep_alpha: f32) -> anyhow::Result<()> {
self.inner.update(
app,
DASH_RES_VEC2.x / GUI_SCALE,
DASH_RES_VEC2.y / GUI_SCALE,
let res = self.inner.update(FrontendUpdateParams {
data: app,
width: DASH_RES_VEC2.x / GUI_SCALE,
height: DASH_RES_VEC2.y / GUI_SCALE,
timestep_alpha,
)
})?;
app_misc::process_layout_result(app, res);
Ok(())
}
fn push_event(&mut self, event: &WguiEvent) -> EventResult {

View File

@@ -167,7 +167,7 @@ impl OverlayBackend for EditModeBackendWrapper {
let gui_scale = (new_size.x / 750.0).min(new_size.y / 300.0);
self.panel.gui_scale = (gui_scale * 4.0).round() / 4.0;
self.panel.update_layout()?;
self.panel.update_layout(app)?;
}
self.can_render_inner = true;

View File

@@ -1,13 +1,13 @@
use std::{collections::HashMap, rc::Rc};
use crate::{gui::panel::GuiPanel, state::AppState, subsystem::hid::XkbKeymap};
use crate::{app_misc, gui::panel::GuiPanel, state::AppState, subsystem::hid::XkbKeymap};
use glam::{FloatExt, Mat4, Vec2, vec2, vec3};
use wgui::{
animation::{Animation, AnimationEasing},
assets::AssetPath,
drawing::{self, Color},
event::{self, CallbackMetadata, EventListenerKind},
layout::LayoutParams,
layout::{LayoutParams, LayoutUpdateParams},
parser::Fetchable,
renderer_vk::util,
taffy::{self, prelude::length},
@@ -264,7 +264,13 @@ pub(super) fn create_keyboard_panel(
}
}
panel.layout.update(vec2(2048., 2048.), 0.0)?;
app_misc::process_layout_result(
app,
panel.layout.update(&mut LayoutUpdateParams {
size: vec2(2048., 2048.),
timestep_alpha: 0.0,
})?,
);
panel.parser_state = gui_state_key;
Ok(panel)

View File

@@ -179,7 +179,10 @@ fn new_toast(toast: Toast, app: &mut AppState) -> Option<OverlayWindowConfig> {
.inspect_err(|e| log::error!("Could not create toast: {e:?}"))
.ok()?;
panel.update_layout().context("layout update failed").ok()?;
panel
.update_layout(app)
.context("layout update failed")
.ok()?;
Some(OverlayWindowConfig {
name: TOAST_NAME.clone(),

View File

@@ -551,7 +551,7 @@ pub fn create_watch(app: &mut AppState) -> anyhow::Result<OverlayWindowConfig> {
align_to_hmd: false,
};
panel.update_layout()?;
panel.update_layout(app)?;
Ok(OverlayWindowConfig {
name: WATCH_NAME.into(),