fix rendering

This commit is contained in:
Evan Almloff committed 2022-04-13 11:39:38 -05:00
1 parent 628638b9af
commit 3b06059834
11 files changed
+509 -65

No files matched your search

+31 -8
View File
@@ -4,12 +4,35 @@ use proc_macro::TokenStream;
use quote::{quote, ToTokens};
use syn::{
self,
parse::{Parse, ParseStream},
parse::{Parse, ParseStream, Result},
punctuated::Punctuated,
token::Paren,
Field, Ident, Token, Type, TypeTuple,
Field, Ident, LitStr, Token, Type, TypeTuple,
};
// struct StrSlice {
// init: LitStr,
// }
// impl Parse for StrSlice {
// fn parse(input: ParseStream) -> Result<Self> {
// input.parse::<Token![[]>()?;
// let str: LitStr = input.parse()?;
// let name: Ident = input.parse()?;
// input.parse::<Token![,]>()?;
// input.parse::<Token![]]>()?;
// Ok(LazyStatic {
// visibility,
// name,
// ty,
// init,
// })
// }
// }
// #[proc_macro]
// pub fn sorted_str_slice(input: TokenStream) -> TokenStream {}
#[derive(PartialEq)]
enum DepKind {
NodeDepState,
@@ -105,7 +128,7 @@ fn impl_derive_macro(ast: &syn::DeriveInput) -> TokenStream {
let gen = quote! {
impl State for #type_name{
fn update_node_dep_state<'a>(&'a mut self, ty: std::any::TypeId, node: &'a dioxus_core::VNode<'a>, ctx: &anymap::AnyMap) -> bool{
fn update_node_dep_state<'a>(&'a mut self, ty: std::any::TypeId, node: &'a dioxus_core::VNode<'a>, vdom: &'a dioxus_core::VirtualDom, ctx: &anymap::AnyMap) -> bool{
use dioxus_native_core::state::NodeDepState as _;
// println!("called update_node_dep_state with ty: {:?}", ty);
if false {
@@ -117,7 +140,7 @@ fn impl_derive_macro(ast: &syn::DeriveInput) -> TokenStream {
}
}
fn update_parent_dep_state<'a>(&'a mut self, ty: std::any::TypeId, node: &'a dioxus_core::VNode<'a>, parent: Option<&Self>, ctx: &anymap::AnyMap) -> bool{
fn update_parent_dep_state<'a>(&'a mut self, ty: std::any::TypeId, node: &'a dioxus_core::VNode<'a>, vdom: &'a dioxus_core::VirtualDom, parent: Option<&Self>, ctx: &anymap::AnyMap) -> bool{
use dioxus_native_core::state::ParentDepState as _;
// println!("called update_parent_dep_state with ty: {:?}", ty);
if false {
@@ -129,7 +152,7 @@ fn impl_derive_macro(ast: &syn::DeriveInput) -> TokenStream {
}
}
fn update_child_dep_state<'a>(&'a mut self, ty: std::any::TypeId, node: &'a dioxus_core::VNode<'a>, children: &[&Self], ctx: &anymap::AnyMap) -> bool{
fn update_child_dep_state<'a>(&'a mut self, ty: std::any::TypeId, node: &'a dioxus_core::VNode<'a>, vdom: &'a dioxus_core::VirtualDom, children: &[&Self], ctx: &anymap::AnyMap) -> bool{
use dioxus_native_core::state::ChildDepState as _;
// println!("called update_child_dep_state with ty: {:?}", ty);
if false {
@@ -205,7 +228,7 @@ struct DepTypes {
}
impl Parse for DepTypes {
fn parse(input: ParseStream) -> Result<Self, syn::Error> {
fn parse(input: ParseStream) -> Result<Self> {
let dep_ty = input.parse().ok();
let comma: Option<Token![,]> = input.parse().ok();
let ctx_ty = input.parse().ok();
@@ -221,7 +244,7 @@ struct NodeDepTypes {
}
impl Parse for NodeDepTypes {
fn parse(input: ParseStream) -> Result<Self, syn::Error> {
fn parse(input: ParseStream) -> Result<Self> {
let ctx_ty = input.parse().ok();
Ok(Self { ctx_ty })
}
@@ -307,7 +330,7 @@ impl<'a> StateMember<'a> {
quote! {&()}
};
let ty = &self.mem.ty;
let node_view = quote!(NodeView::new(node, #ty::NODE_MASK));
let node_view = quote!(NodeView::new(node, #ty::NODE_MASK, vdom));
if let Some(dep_ident) = &self.dep_mem.map(|m| &m.ident) {
match self.dep_kind {
DepKind::NodeDepState => {