listener handles, auto-clean destroyed listeners, minor refactor

This commit is contained in:
Aleksander
2025-07-06 20:53:40 +02:00
parent 92444bb5c4
commit 857c5ec865
16 changed files with 348 additions and 182 deletions

View File

@@ -126,7 +126,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
MouseScrollDelta::LineDelta(x, y) => testbed
.layout()
.push_event(
&listeners,
&mut listeners,
&wgui::event::Event::MouseWheel(MouseWheelEvent {
shift: Vec2::new(x, y),
pos: mouse / scale,
@@ -138,7 +138,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
MouseScrollDelta::PixelDelta(pos) => testbed
.layout()
.push_event(
&listeners,
&mut listeners,
&wgui::event::Event::MouseWheel(MouseWheelEvent {
shift: Vec2::new(pos.x as f32 / 5.0, pos.y as f32 / 5.0),
pos: mouse / scale,
@@ -157,7 +157,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
testbed
.layout()
.push_event(
&listeners,
&mut listeners,
&wgui::event::Event::MouseDown(MouseDownEvent {
pos: mouse / scale,
button: MouseButton::Left,
@@ -170,7 +170,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
testbed
.layout()
.push_event(
&listeners,
&mut listeners,
&wgui::event::Event::MouseUp(MouseUpEvent {
pos: mouse / scale,
button: MouseButton::Left,
@@ -190,7 +190,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
testbed
.layout()
.push_event(
&listeners,
&mut listeners,
&wgui::event::Event::MouseMotion(MouseMotionEvent {
pos: mouse / scale,
device: 0,

View File

@@ -1,9 +1,12 @@
use crate::{assets, testbed::Testbed};
use glam::Vec2;
use wgui::{event::EventListenerCollection, layout::Layout};
use wgui::{event::EventListenerCollection, layout::Layout, parser::ParserState};
pub struct TestbedAny {
pub layout: Layout,
#[allow(dead_code)]
state: ParserState,
}
impl TestbedAny {
@@ -12,9 +15,9 @@ impl TestbedAny {
listeners: &mut EventListenerCollection<(), ()>,
) -> anyhow::Result<Self> {
let path = format!("gui/{name}.xml");
let (layout, _state) =
let (layout, state) =
wgui::parser::new_layout_from_assets(Box::new(assets::Asset {}), listeners, &path)?;
Ok(Self { layout })
Ok(Self { layout, state })
}
}

View File

@@ -1,19 +1,22 @@
use crate::{assets, testbed::Testbed};
use glam::Vec2;
use wgui::{event::EventListenerCollection, layout::Layout};
use wgui::{event::EventListenerCollection, layout::Layout, parser::ParserState};
pub struct TestbedGeneric {
pub layout: Layout,
#[allow(dead_code)]
state: ParserState,
}
impl TestbedGeneric {
pub fn new(listeners: &mut EventListenerCollection<(), ()>) -> anyhow::Result<Self> {
const XML_PATH: &str = "gui/testbed.xml";
let (layout, _res) =
let (layout, state) =
wgui::parser::new_layout_from_assets(Box::new(assets::Asset {}), listeners, XML_PATH)?;
Ok(Self { layout })
Ok(Self { layout, state })
}
}