diff --git a/src/core/sense.rs b/src/core/sense.rs index cb3ad20..5a064a0 100644 --- a/src/core/sense.rs +++ b/src/core/sense.rs @@ -38,7 +38,7 @@ impl, Tag> Sensable for W { { self.with_id(move |ui, id| { let id2 = id.clone(); - ui.add(id.on(sense, move |ctx| f(&id2, ctx))) + ui.add(id.on(sense, move |ui| f(&id2, ui))) }) } fn edit_on( diff --git a/src/layout/sense.rs b/src/layout/sense.rs index 4e44660..94c3e7e 100644 --- a/src/layout/sense.rs +++ b/src/layout/sense.rs @@ -43,6 +43,7 @@ pub struct SenseTrigger { pub shape: SenseShape, pub sense: Sense, } +#[derive(Default)] pub struct SensorGroup { pub hover: ActivationState, pub cursor: ActivationState, @@ -134,15 +135,6 @@ impl ActivationState { } } -impl Default for SensorGroup { - fn default() -> Self { - Self { - hover: Default::default(), - cursor: Default::default(), - sensors: Default::default(), - } - } -} impl Clone for SensorGroup { fn clone(&self) -> Self { Self { diff --git a/src/lib.rs b/src/lib.rs index 1935c7b..c8b54e5 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -7,7 +7,7 @@ pub mod core; pub mod layout; pub mod render; -mod util; +pub mod util; pub mod prelude { pub use crate::core::*; diff --git a/src/testing/app.rs b/src/testing/app.rs index 36f1d7d..16c154f 100644 --- a/src/testing/app.rs +++ b/src/testing/app.rs @@ -1,4 +1,3 @@ -use ui::layout::Ui; use winit::{ application::ApplicationHandler, event::WindowEvent, @@ -10,7 +9,7 @@ use super::Client; #[derive(Default)] pub struct App { - client: Option<(Client, Ui)>, + client: Option, } impl App { @@ -26,14 +25,13 @@ impl ApplicationHandler for App { let window = event_loop .create_window(Window::default_attributes()) .unwrap(); - let (ui, cui) = Client::create_ui(); - let client = Client::new(window.into(), cui); - self.client = Some((client, ui)); + let client = Client::new(window.into()); + self.client = Some(client); } } fn window_event(&mut self, event_loop: &ActiveEventLoop, _id: WindowId, event: WindowEvent) { - let (client, ui) = self.client.as_mut().unwrap(); - client.event(event, event_loop, ui); + let client = self.client.as_mut().unwrap(); + client.event(event, event_loop); } } diff --git a/src/testing/mod.rs b/src/testing/mod.rs index 02452b8..2aff64d 100644 --- a/src/testing/mod.rs +++ b/src/testing/mod.rs @@ -18,16 +18,15 @@ pub fn main() { pub struct Client { renderer: Renderer, input: Input, - ui: ClientUi, -} - -pub struct ClientUi { + ui: Ui, info: WidgetId, old_info: String, } impl Client { - pub fn create_ui() -> (Ui, ClientUi) { + pub fn new(window: Arc) -> Self { + let renderer = Renderer::new(window); + let mut ui = Ui::new(); let rect = Rect { color: UiColor::WHITE, @@ -148,52 +147,44 @@ impl Client { .span(Dir::DOWN, [fixed(40), ratio(1)]) .label("root"), ); - ( - ui, - ClientUi { - info, - old_info: String::new(), - }, - ) - } - pub fn new(window: Arc, ui: ClientUi) -> Self { - let renderer = Renderer::new(window); Self { renderer, input: Input::default(), ui, + info, + old_info: String::new(), } } - pub fn event(&mut self, event: WindowEvent, event_loop: &ActiveEventLoop, ui: &mut Ui) { + pub fn event(&mut self, event: WindowEvent, event_loop: &ActiveEventLoop) { self.input.event(&event); let cursor_state = self.cursor_state(); let window_size = self.window_size(); - ui.run_sensors(&cursor_state, window_size); + self.ui.run_sensors(&cursor_state, window_size); match event { WindowEvent::CloseRequested => event_loop.exit(), WindowEvent::RedrawRequested => { - ui.update(); - self.renderer.update(ui); + self.ui.update(); + self.renderer.update(&mut self.ui); self.renderer.draw() } WindowEvent::Resized(size) => { - ui.resize((size.width, size.height)); + self.ui.resize((size.width, size.height)); self.renderer.resize(&size) } _ => (), } let new = format!( "widgets: {}\nviews: {}", - ui.num_widgets(), + self.ui.num_widgets(), self.renderer.ui.view_count() ); - if new != self.ui.old_info { - ui[&self.ui.info].content = new.clone(); - self.ui.old_info = new; + if new != self.old_info { + self.ui[&self.info].content = new.clone(); + self.old_info = new; } - if ui.needs_redraw() { + if self.ui.needs_redraw() { self.renderer.window().request_redraw(); } } diff --git a/src/util/mod.rs b/src/util/mod.rs index 5cf9d68..3bcb269 100644 --- a/src/util/mod.rs +++ b/src/util/mod.rs @@ -2,9 +2,9 @@ mod id; mod math; mod refcount; -pub use id::*; -pub use math::*; -pub use refcount::*; +pub(crate) use id::*; +pub(crate) use math::*; +pub(crate) use refcount::*; pub type HashMap = std::collections::HashMap; pub type HashSet = std::collections::HashSet;