mirror of
https://github.com/slint-ui/slint.git
synced 2025-10-03 15:14:35 +00:00
Rust: add on_* to set signal handler
This commit is contained in:
parent
b2a1a72450
commit
8aef208340
3 changed files with 18 additions and 13 deletions
|
@ -144,16 +144,14 @@ Hello := Rectangle {
|
||||||
fn main() {
|
fn main() {
|
||||||
let app = Hello::new();
|
let app = Hello::new();
|
||||||
let app_weak = sixtyfps::re_exports::PinWeak::downgrade(app.clone());
|
let app_weak = sixtyfps::re_exports::PinWeak::downgrade(app.clone());
|
||||||
app.plus_clicked.set_handler(move |()| {
|
app.as_ref().on_plus_clicked(move || {
|
||||||
let app = app_weak.upgrade().unwrap();
|
let app = app_weak.upgrade().unwrap();
|
||||||
let counter = Hello::field_offsets().counter.apply_pin(app.as_ref());
|
app.as_ref().set_counter(app.as_ref().get_counter() + 1);
|
||||||
counter.set(counter.get() + 1);
|
|
||||||
});
|
});
|
||||||
let app_weak = sixtyfps::re_exports::PinWeak::downgrade(app.clone());
|
let app_weak = sixtyfps::re_exports::PinWeak::downgrade(app.clone());
|
||||||
app.minus_clicked.set_handler(move |()| {
|
app.as_ref().on_minus_clicked(move || {
|
||||||
let app = app_weak.upgrade().unwrap();
|
let app = app_weak.upgrade().unwrap();
|
||||||
let counter = Hello::field_offsets().counter.apply_pin(app.as_ref());
|
app.as_ref().set_counter(app.as_ref().get_counter() - 1);
|
||||||
counter.set(counter.get() - 1);
|
|
||||||
});
|
});
|
||||||
app.run();
|
app.run();
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,16 +5,14 @@ sixtyfps::include_modules!();
|
||||||
fn main() {
|
fn main() {
|
||||||
let app = Hello::new();
|
let app = Hello::new();
|
||||||
let app_weak = sixtyfps::re_exports::PinWeak::downgrade(app.clone());
|
let app_weak = sixtyfps::re_exports::PinWeak::downgrade(app.clone());
|
||||||
app.plus_clicked.set_handler(move |()| {
|
app.as_ref().on_plus_clicked(move || {
|
||||||
let app = app_weak.upgrade().unwrap();
|
let app = app_weak.upgrade().unwrap();
|
||||||
let counter = Hello::field_offsets().counter.apply_pin(app.as_ref());
|
app.as_ref().set_counter(app.as_ref().get_counter() + 1);
|
||||||
counter.set(counter.get() + 1);
|
|
||||||
});
|
});
|
||||||
let app_weak = sixtyfps::re_exports::PinWeak::downgrade(app.clone());
|
let app_weak = sixtyfps::re_exports::PinWeak::downgrade(app.clone());
|
||||||
app.minus_clicked.set_handler(move |()| {
|
app.as_ref().on_minus_clicked(move || {
|
||||||
let app = app_weak.upgrade().unwrap();
|
let app = app_weak.upgrade().unwrap();
|
||||||
let counter = Hello::field_offsets().counter.apply_pin(app.as_ref());
|
app.as_ref().set_counter(app.as_ref().get_counter() - 1);
|
||||||
counter.set(counter.get() - 1);
|
|
||||||
});
|
});
|
||||||
app.run();
|
app.run();
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,7 +52,6 @@ pub fn generate(component: &Rc<Component>, diag: &mut BuildDiagnostics) -> Optio
|
||||||
declared_signals.push(prop_ident.clone());
|
declared_signals.push(prop_ident.clone());
|
||||||
if property_decl.expose_in_public_api {
|
if property_decl.expose_in_public_api {
|
||||||
let emitter_ident = quote::format_ident!("emit_{}", prop_name);
|
let emitter_ident = quote::format_ident!("emit_{}", prop_name);
|
||||||
|
|
||||||
property_and_signal_accessors.push(
|
property_and_signal_accessors.push(
|
||||||
quote!(
|
quote!(
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
|
@ -62,6 +61,16 @@ pub fn generate(component: &Rc<Component>, diag: &mut BuildDiagnostics) -> Optio
|
||||||
)
|
)
|
||||||
.into(),
|
.into(),
|
||||||
);
|
);
|
||||||
|
let on_ident = quote::format_ident!("on_{}", prop_name);
|
||||||
|
property_and_signal_accessors.push(
|
||||||
|
quote!(
|
||||||
|
#[allow(dead_code)]
|
||||||
|
fn #on_ident(self: ::core::pin::Pin<&Self>, f: impl Fn() + 'static) {
|
||||||
|
Self::field_offsets().#prop_ident.apply_pin(self).set_handler(move |()|f())
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.into(),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
declared_property_vars.push(prop_ident.clone());
|
declared_property_vars.push(prop_ident.clone());
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue