Clean up shared UI runtime state

This commit is contained in:
iris committed 2026-09-11 00:55:33 -04:00
1 parent 9b4c690916
commit 5ca244528f
27 files changed
+355 -499

No files matched your search

+9 -9
View File
@@ -101,8 +101,8 @@ pub fn widget_trait(input: TokenStream) -> TokenStream {
.into()
}
#[proc_macro_derive(DefaultUiState, attributes(default_ui_state))]
pub fn derive_default_ui_state(input: TokenStream) -> TokenStream {
#[proc_macro_derive(DesktopUiState, attributes(desktop_ui_state))]
pub fn derive_desktop_ui_state(input: TokenStream) -> TokenStream {
let mut output = proc_macro2::TokenStream::new();
let state: ItemStruct = parse_macro_input!(input);
@@ -112,14 +112,14 @@ pub fn derive_default_ui_state(input: TokenStream) -> TokenStream {
for field in &state.fields {
if !found_attr
&& let Type::Path(path) = &field.ty
&& path.path.is_ident("DefaultUiState")
&& path.path.is_ident("DesktopUiState")
{
state_field = Some(field);
}
let Some(attr) = field
.attrs
.iter()
.find(|a| a.path().is_ident("default_ui_state"))
.find(|a| a.path().is_ident("desktop_ui_state"))
else {
continue;
};
@@ -127,7 +127,7 @@ pub fn derive_default_ui_state(input: TokenStream) -> TokenStream {
output.extend(
Error::new(
attr.span(),
"cannot have more than one default_ui_state attribute",
"cannot have more than one desktop_ui_state attribute",
)
.into_compile_error(),
);
@@ -138,18 +138,18 @@ pub fn derive_default_ui_state(input: TokenStream) -> TokenStream {
}
let Some(field) = state_field else {
output.extend(
Error::new(state.ident.span(), "no DefaultUiState field found").into_compile_error(),
Error::new(state.ident.span(), "no DesktopUiState field found").into_compile_error(),
);
return output.into();
};
let sname = &state.ident;
let fname = field.ident.as_ref().unwrap();
output.extend(quote! {
impl iris::default::HasDefaultUiState for #sname {
fn default_state(&self) -> &iris::default::DefaultUiState {
impl iris::desktop::HasDesktopUiState for #sname {
fn desktop_state(&self) -> &iris::desktop::DesktopUiState {
&self.#fname
}
fn default_state_mut(&mut self) -> &mut iris::default::DefaultUiState {
fn desktop_state_mut(&mut self) -> &mut iris::desktop::DesktopUiState {
&mut self.#fname
}
}