proper toast sizing
This commit is contained in:
@@ -2,13 +2,13 @@
|
|||||||
<include src="theme.xml" />
|
<include src="theme.xml" />
|
||||||
|
|
||||||
<elements>
|
<elements>
|
||||||
<div interactable="0" flex_direction="column">
|
<div interactable="0" >
|
||||||
<rectangle height="100%" padding="4" box_sizing="content_box" flex_wrap="wrap" flex_direction="row" gap="4" color="#000000c0" border_color="~color_accent" border="2" round="8" justify_content="space_between">
|
<rectangle padding="4" box_sizing="content_box" flex_wrap="wrap" flex_direction="row" gap="4" color="#000000c0" border_color="~color_accent" border="2" round="8" justify_content="space_between">
|
||||||
<div flex_direction="row" padding="4" align_items="center" justify_content="center">
|
<div width="100%" padding="4">
|
||||||
<label text="" id="toast_title" weight="bold" />
|
<label text="toast title" id="toast_title" weight="bold" />
|
||||||
</div>
|
</div>
|
||||||
<div flex_direction="row" flex_wrap="wrap" padding="4" align_items="center" justify_content="center" id="toolbox">
|
<div width="100%" height="100%" padding="4" flex_wrap="wrap">
|
||||||
<label text="" id="toast_body" />
|
<label text="toast body goes here" id="toast_body" />
|
||||||
</div>
|
</div>
|
||||||
</rectangle>
|
</rectangle>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -102,7 +102,6 @@ impl Toast {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(clippy::too_many_lines)]
|
|
||||||
fn new_toast(toast: Toast, app: &mut AppState) -> Option<OverlayWindowConfig> {
|
fn new_toast(toast: Toast, app: &mut AppState) -> Option<OverlayWindowConfig> {
|
||||||
let current_method = app
|
let current_method = app
|
||||||
.session
|
.session
|
||||||
@@ -112,7 +111,10 @@ fn new_toast(toast: Toast, app: &mut AppState) -> Option<OverlayWindowConfig> {
|
|||||||
.unwrap_or(ToastDisplayMethod::Hide);
|
.unwrap_or(ToastDisplayMethod::Hide);
|
||||||
|
|
||||||
let (spawn_point, spawn_rotation, positioning) = match current_method {
|
let (spawn_point, spawn_rotation, positioning) = match current_method {
|
||||||
ToastDisplayMethod::Hide => return None,
|
ToastDisplayMethod::Hide => {
|
||||||
|
log::debug!("Not showing toast: filtered out");
|
||||||
|
return None;
|
||||||
|
}
|
||||||
ToastDisplayMethod::Center => (
|
ToastDisplayMethod::Center => (
|
||||||
vec3(0., -0.2, -0.5),
|
vec3(0., -0.2, -0.5),
|
||||||
Quat::IDENTITY,
|
Quat::IDENTITY,
|
||||||
@@ -168,7 +170,7 @@ fn new_toast(toast: Toast, app: &mut AppState) -> Option<OverlayWindowConfig> {
|
|||||||
Ok(())
|
Ok(())
|
||||||
});
|
});
|
||||||
|
|
||||||
let panel = GuiPanel::new_from_template(
|
let mut panel = GuiPanel::new_from_template(
|
||||||
app,
|
app,
|
||||||
"gui/toast.xml",
|
"gui/toast.xml",
|
||||||
(),
|
(),
|
||||||
@@ -177,8 +179,11 @@ fn new_toast(toast: Toast, app: &mut AppState) -> Option<OverlayWindowConfig> {
|
|||||||
..Default::default()
|
..Default::default()
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
.inspect_err(|e| log::error!("Could not create toast: {e:?}"))
|
||||||
.ok()?;
|
.ok()?;
|
||||||
|
|
||||||
|
panel.update_layout().context("layout update failed").ok()?;
|
||||||
|
|
||||||
Some(OverlayWindowConfig {
|
Some(OverlayWindowConfig {
|
||||||
name: TOAST_NAME.clone(),
|
name: TOAST_NAME.clone(),
|
||||||
default_state: OverlayWindowState {
|
default_state: OverlayWindowState {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
use glam::Affine3A;
|
use glam::Affine3A;
|
||||||
use idmap::IdMap;
|
use idmap::IdMap;
|
||||||
use smallvec::{SmallVec, smallvec};
|
use smallvec::{smallvec, SmallVec};
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use wgui::{
|
use wgui::{
|
||||||
font_config::WguiFontConfig, gfx::WGfx, globals::WguiGlobals,
|
font_config::WguiFontConfig, gfx::WGfx, globals::WguiGlobals,
|
||||||
|
|||||||
@@ -189,10 +189,12 @@ where
|
|||||||
}
|
}
|
||||||
OverlayTask::Create(sel, f) => {
|
OverlayTask::Create(sel, f) => {
|
||||||
let None = self.mut_by_selector(&sel) else {
|
let None = self.mut_by_selector(&sel) else {
|
||||||
|
log::debug!("Could not create {sel:?}: exists");
|
||||||
return Ok(());
|
return Ok(());
|
||||||
};
|
};
|
||||||
|
|
||||||
let Some(overlay_config) = f(app) else {
|
let Some(overlay_config) = f(app) else {
|
||||||
|
log::debug!("Could not create {sel:?}: empty config");
|
||||||
return Ok(());
|
return Ok(());
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -209,6 +211,7 @@ where
|
|||||||
&& o.birthframe < FRAME_COUNTER.load(Ordering::Relaxed)
|
&& o.birthframe < FRAME_COUNTER.load(Ordering::Relaxed)
|
||||||
{
|
{
|
||||||
if let Some(o) = self.remove_by_selector(&sel, app) {
|
if let Some(o) = self.remove_by_selector(&sel, app) {
|
||||||
|
log::debug!("Dropping overlay {}", o.config.name);
|
||||||
self.dropped_overlays.push_back(o);
|
self.dropped_overlays.push_back(o);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -346,7 +349,7 @@ impl<T> OverlayWindowManager<T> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn remove_by_selector(
|
fn remove_by_selector(
|
||||||
&mut self,
|
&mut self,
|
||||||
selector: &OverlaySelector,
|
selector: &OverlaySelector,
|
||||||
app: &mut AppState,
|
app: &mut AppState,
|
||||||
@@ -411,6 +414,7 @@ impl<T> OverlayWindowManager<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if overlay.config.show_on_spawn {
|
if overlay.config.show_on_spawn {
|
||||||
|
log::debug!("activating {} due to show_on_spawn", overlay.config.name);
|
||||||
overlay.config.activate(app);
|
overlay.config.activate(app);
|
||||||
}
|
}
|
||||||
let ret_val = self.overlays.insert(overlay);
|
let ret_val = self.overlays.insert(overlay);
|
||||||
|
|||||||
Reference in New Issue
Block a user