Change summary
crates/gpui/src/fonts.rs | 4
crates/gpui3/src/elements/nested.rs | 4
crates/gpui3/src/styled.rs | 5
crates/refineable/derive_refineable/src/derive_refineable.rs | 42 -----
4 files changed, 12 insertions(+), 43 deletions(-)
Detailed changes
@@ -154,6 +154,10 @@ impl Refineable for TextStyleRefinement {
self.underline = refinement.underline;
}
}
+
+ fn refined(self, refinement: Self::Refinement) -> Self {
+ todo!()
+ }
}
#[derive(JsonSchema)]
@@ -2,7 +2,7 @@ use crate::{
group_bounds, AnyElement, DispatchPhase, Element, IntoAnyElement, MouseMoveEvent, SharedString,
Style, StyleCascade, StyleRefinement,
};
-use refineable::CascadeSlot;
+use refineable::{CascadeSlot, Refineable};
use smallvec::SmallVec;
use std::sync::{
atomic::{AtomicBool, Ordering::SeqCst},
@@ -237,7 +237,7 @@ impl<V: 'static + Send + Sync> Styled for LayoutNodeState<V> {
fn computed_style(&mut self) -> &Style {
self.computed_style
- .get_or_insert_with(|| Style::from(self.style_cascade.merged()))
+ .get_or_insert_with(|| Style::default().refined(self.style_cascade.merged()))
}
}
@@ -7,10 +7,7 @@ pub trait Styled {
fn declared_style(&mut self) -> &mut <Self::Style as Refineable>::Refinement;
fn computed_style(&mut self) -> Self::Style {
- todo!()
- // let x: StyleRefinement = self.style_cascade().merged();
-
- // x.into();
+ Self::Style::default().refined(self.style_cascade().merged())
}
fn hover(self) -> Hoverable<Self>
@@ -157,7 +157,7 @@ pub fn derive_refineable(input: TokenStream) -> TokenStream {
})
.collect();
- let refinement_refined_assigments: Vec<TokenStream2> = fields
+ let refinement_refined_assignments: Vec<TokenStream2> = fields
.iter()
.map(|field| {
let name = &field.ident;
@@ -169,37 +169,14 @@ pub fn derive_refineable(input: TokenStream) -> TokenStream {
}
} else {
quote! {
- if let Some(value) = refinement.#name {
- self.#name = Some(value);
+ if refinement.#name.is_some() {
+ self.#name = refinement.#name;
}
}
}
})
.collect();
- let from_refinement_assigments: Vec<TokenStream2> = fields
- .iter()
- .map(|field| {
- let name = &field.ident;
- let is_refineable = is_refineable_field(field);
- let is_optional = is_optional_field(field);
-
- if is_refineable {
- quote! {
- #name: value.#name.into(),
- }
- } else if is_optional {
- quote! {
- #name: value.#name.map(|v| v.into()),
- }
- } else {
- quote! {
- #name: value.#name.map(|v| v.into()).unwrap_or_default(),
- }
- }
- })
- .collect();
-
let debug_impl = if impl_debug_on_refinement {
let refinement_field_debugs: Vec<TokenStream2> = fields
.iter()
@@ -266,21 +243,11 @@ pub fn derive_refineable(input: TokenStream) -> TokenStream {
}
fn refined(mut self, refinement: Self::Refinement) -> Self {
- #( #refinement_refined_assigments )*
+ #( #refinement_refined_assignments )*
self
}
}
- impl #impl_generics From<#refinement_ident #ty_generics> for #ident #ty_generics
- #where_clause
- {
- fn from(value: #refinement_ident #ty_generics) -> Self {
- Self {
- #( #from_refinement_assigments )*
- }
- }
- }
-
impl #impl_generics ::core::default::Default for #refinement_ident #ty_generics
#where_clause
{
@@ -306,6 +273,7 @@ pub fn derive_refineable(input: TokenStream) -> TokenStream {
#debug_impl
};
+
gen.into()
}