Add the as_weak to rust generated component

This commit is contained in:
Olivier Goffart 2020-08-03 15:36:21 +02:00
parent 785bdb62ed
commit de188e0a54
3 changed files with 9 additions and 4 deletions

View file

@ -143,12 +143,12 @@ Hello := Rectangle {
fn main() {
let app = Hello::new();
let app_weak = sixtyfps::re_exports::PinWeak::downgrade(app.clone());
let app_weak = app.clone().as_weak();
app.as_ref().on_plus_clicked(move || {
let app = app_weak.upgrade().unwrap();
app.as_ref().set_counter(app.as_ref().get_counter() + 1);
});
let app_weak = sixtyfps::re_exports::PinWeak::downgrade(app.clone());
let app_weak = app.clone().as_weak();
app.as_ref().on_minus_clicked(move || {
let app = app_weak.upgrade().unwrap();
app.as_ref().set_counter(app.as_ref().get_counter() - 1);

View file

@ -4,12 +4,12 @@ sixtyfps::include_modules!();
fn main() {
let app = Hello::new();
let app_weak = sixtyfps::re_exports::PinWeak::downgrade(app.clone());
let app_weak = app.clone().as_weak();
app.as_ref().on_plus_clicked(move || {
let app = app_weak.upgrade().unwrap();
app.as_ref().set_counter(app.as_ref().get_counter() + 1);
});
let app_weak = sixtyfps::re_exports::PinWeak::downgrade(app.clone());
let app_weak = app.clone().as_weak();
app.as_ref().on_minus_clicked(move || {
let app = app_weak.upgrade().unwrap();
app.as_ref().set_counter(app.as_ref().get_counter() - 1);

View file

@ -372,6 +372,11 @@ fn generate_component(
self.dpi.set(dpi);
}
});
property_and_signal_accessors.push(quote! {
pub fn as_weak(self: core::pin::Pin<std::rc::Rc<Self>>) -> sixtyfps::re_exports::PinWeak<Self> {
sixtyfps::re_exports::PinWeak::downgrade(self)
}
});
visibility = Some(quote!(pub));
};