diff --git a/drust/src/main.rs b/drust/src/main.rs index 98f3b4c7..d1381154 100644 --- a/drust/src/main.rs +++ b/drust/src/main.rs @@ -1,6 +1,5 @@ use pagetop::prelude::*; -#[derive(AssignHandle)] struct Drust; impl PackageTrait for Drust { diff --git a/examples/hello-name.rs b/examples/hello-name.rs index 4798c08b..dab31818 100644 --- a/examples/hello-name.rs +++ b/examples/hello-name.rs @@ -1,6 +1,5 @@ use pagetop::prelude::*; -#[derive(AssignHandle)] struct HelloName; impl PackageTrait for HelloName { diff --git a/examples/hello-world.rs b/examples/hello-world.rs index 0dff3883..eb7ef636 100644 --- a/examples/hello-world.rs +++ b/examples/hello-world.rs @@ -1,6 +1,5 @@ use pagetop::prelude::*; -#[derive(AssignHandle)] struct HelloWorld; impl PackageTrait for HelloWorld { diff --git a/helpers/pagetop-macros/src/lib.rs b/helpers/pagetop-macros/src/lib.rs index dbea55d1..32c25968 100644 --- a/helpers/pagetop-macros/src/lib.rs +++ b/helpers/pagetop-macros/src/lib.rs @@ -2,9 +2,8 @@ mod maud; use concat_string::concat_string; use proc_macro::TokenStream; -use proc_macro2::TokenStream as TokenStream2; use proc_macro_error::proc_macro_error; -use quote::{format_ident, quote, quote_spanned, ToTokens}; +use quote::{quote, quote_spanned, ToTokens}; use syn::{parse_macro_input, parse_str, DeriveInput, ItemFn}; #[proc_macro] @@ -103,48 +102,6 @@ pub fn test(_: TokenStream, item: TokenStream) -> TokenStream { output } -#[proc_macro_derive(AssignHandle, attributes(handle))] -pub fn assign_handle_derive(input: TokenStream) -> TokenStream { - impl_handle(input, quote! { pagetop }) -} - -#[proc_macro_derive(BaseHandle, attributes(handle))] -pub fn base_handle_derive(input: TokenStream) -> TokenStream { - impl_handle(input, quote! { crate }) -} - -fn impl_handle(input: TokenStream, crate_name: TokenStream2) -> TokenStream { - let input = parse_macro_input!(input as DeriveInput); - let (impl_generics, ty_generics, where_clause) = input.generics.split_for_impl(); - - let name = &input.ident; - let handle_name = format_ident!("HANDLE_{}", name.to_string().to_uppercase()); - - let expanded = quote! { - const #handle_name: #crate_name::Handle = - #crate_name::util::handle(module_path!(), file!(), line!(), column!()); - - impl #impl_generics #crate_name::ImplementHandle for #name #ty_generics #where_clause { - #[inline] - fn static_handle() -> #crate_name::Handle { - #handle_name - } - - #[inline] - fn matches_handle(is: #crate_name::Handle) -> bool { - is == #handle_name - } - - #[inline] - fn handle(&self) -> #crate_name::Handle { - #handle_name - } - } - }; - - TokenStream::from(expanded) -} - #[proc_macro_derive(ComponentClasses)] pub fn component_classes_derive(input: TokenStream) -> TokenStream { let input = parse_macro_input!(input as DeriveInput); diff --git a/packages/pagetop-admin/src/lib.rs b/packages/pagetop-admin/src/lib.rs index 5bb2391a..44bcd938 100644 --- a/packages/pagetop-admin/src/lib.rs +++ b/packages/pagetop-admin/src/lib.rs @@ -4,7 +4,6 @@ static_locales!(LOCALES_ADMIN); mod summary; -#[derive(AssignHandle)] pub struct Admin; impl PackageTrait for Admin { diff --git a/packages/pagetop-bootsier/src/lib.rs b/packages/pagetop-bootsier/src/lib.rs index 7e72add9..eb4f06b8 100644 --- a/packages/pagetop-bootsier/src/lib.rs +++ b/packages/pagetop-bootsier/src/lib.rs @@ -4,7 +4,6 @@ static_locales!(LOCALES_BOOTSIER); static_files!(bootsier); -#[derive(AssignHandle)] pub struct Bootsier; impl PackageTrait for Bootsier { @@ -81,8 +80,8 @@ impl ThemeTrait for Bootsier { } fn before_prepare_component(&self, component: &mut dyn ComponentTrait, _cx: &mut Context) { - match component.handle() { - h if Icon::matches_handle(h) => { + match component.type_id() { + t if t == TypeId::of::() => { if let Some(i) = component_as_mut::(component) { match i.font_size() { FontSize::ExtraLarge => { @@ -104,7 +103,7 @@ impl ThemeTrait for Bootsier { }; } } - h if Button::matches_handle(h) => { + t if t == TypeId::of::