-
-
Notifications
You must be signed in to change notification settings - Fork 79
Open
Description
use gtk::WidgetExt;
use relm::Widget;
#[derive(relm_derive::Msg, Debug)]
pub enum Msg {
Destroy,
DeleteEvent,
}
#[relm_derive::widget]
impl Widget for Win {
fn model() -> () {
}
fn update(&mut self, event: Msg) {
dbg!(&event);
if matches!(event, Msg::DeleteEvent) {
gtk::main_quit();
}
}
view! {
gtk::Window {
destroy(_) => Msg::Destroy,
delete_event(_, _) => (Msg::DeleteEvent, gtk::Inhibit(false)),
}
}
}
fn main() {
Win::run(()).expect("Win::run failed");
}$ cargo run
Finished dev [unoptimized + debuginfo] target(s) in 0.02s
Running `target/debug/rust`
[src/main.rs:17] &event = DeleteEvent
The same program without relm:
use gtk::prelude::*;
fn main() {
gtk::init().unwrap();
let window = gtk::Window::new(gtk::WindowType::Toplevel);
window.connect_destroy(|_| {
dbg!("destroy");
});
window.connect_delete_event(|_, _| {
dbg!("delete event");
gtk::main_quit();
gtk::Inhibit(false)
});
window.show_all();
gtk::main();
}$ cargo run
Compiling rust v0.1.0 (/home/sanpi/test/rust)
Finished dev [unoptimized + debuginfo] target(s) in 3.37s
Running `target/debug/rust`
[src/main.rs:21] "delete event" = "delete event"
[src/main.rs:18] "destroy" = "destroy"
Metadata
Metadata
Assignees
Labels
No labels