diff --git a/macro/src/lib.rs b/macro/src/lib.rs index 90a6c71..e13029b 100644 --- a/macro/src/lib.rs +++ b/macro/src/lib.rs @@ -21,6 +21,7 @@ struct InputFn { impl Parse for Input { fn parse(input: ParseStream) -> Result { let vis = input.parse()?; + input.parse::()?; let name = input.parse()?; input.parse::()?; let mut fns = Vec::new(); diff --git a/src/traits.rs b/src/event.rs similarity index 97% rename from src/traits.rs rename to src/event.rs index b5bb34e..a8ca94b 100644 --- a/src/traits.rs +++ b/src/event.rs @@ -1,6 +1,25 @@ use crate::prelude::*; use iris_macro::widget_trait; +pub mod eventable { + use super::*; + + widget_trait! { + pub trait Eventable; + fn on( + self, + event: E, + f: impl WidgetEventFn, + ) -> impl WidgetIdFn { + move |ui| { + let id = self.add(ui); + ui.register_widget_event(&id, event, f); + id + } + } + } +} + // TODO: naming in here is a bit weird like eventable #[macro_export] macro_rules! event_ctx { @@ -61,22 +80,3 @@ macro_rules! event_ctx { }; } pub use event_ctx; - -pub mod eventable { - use super::*; - - widget_trait!( - pub Eventable; - fn on( - self, - event: E, - f: impl WidgetEventFn, - ) -> impl WidgetIdFn { - move |ui| { - let id = self.add(ui); - ui.register_widget_event(&id, event, f); - id - } - } - ); -} diff --git a/src/lib.rs b/src/lib.rs index d484399..261d573 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -4,7 +4,7 @@ #![feature(associated_type_defaults)] mod default; -mod traits; +mod event; mod widget; pub use iris_core::*; @@ -12,7 +12,7 @@ pub use iris_macro::*; pub mod prelude { pub use super::default::*; - pub use super::traits::*; + pub use super::event::*; pub use super::widget::*; pub use iris_core::layout::*; diff --git a/src/widget/trait_fns.rs b/src/widget/trait_fns.rs index 71dde65..a42ad1a 100644 --- a/src/widget/trait_fns.rs +++ b/src/widget/trait_fns.rs @@ -4,8 +4,8 @@ use iris_macro::widget_trait; // these methods should "not require any context" (require unit) because they're in core event_ctx!(()); -widget_trait!( - pub CoreWidget; +widget_trait! { + pub trait CoreWidget; fn pad(self, padding: impl Into) -> impl WidgetFn { |ui| Pad { @@ -130,7 +130,7 @@ widget_trait!( fn set_ptr(self, ptr: &WidgetRef, ui: &mut Ui) { ptr.get_mut().inner = Some(self.add(ui)); } -); +} pub trait CoreWidgetArr, Tag> { fn span(self, dir: Dir) -> SpanBuilder;