diff --git a/src/ui/app.rs b/src/ui/app.rs index 6211938..6b17031 100644 --- a/src/ui/app.rs +++ b/src/ui/app.rs @@ -36,6 +36,7 @@ use crate::ui::build_window::BuildWindowMsg; use crate::ui::debug_view::DebugViewInit; use crate::ui::libsurvive_setup_window::LibsurviveSetupMsg; use crate::ui::main_view::{MainView, MainViewInit, MainViewOutMsg}; +use crate::withclones; use crate::xr_devices::XRDevices; use gtk::prelude::*; use relm4::actions::{AccelsPlus, ActionGroupName, RelmAction, RelmActionGroup}; @@ -596,16 +597,16 @@ impl SimpleComponent for App { let mut actions = RelmActionGroup::::new(); let buildprofile_action = { - let this_sender = sender.clone(); + withclones![sender]; RelmAction::::new_stateless(move |_| { - this_sender.input_sender().emit(Msg::BuildProfile(false)); + sender.input_sender().emit(Msg::BuildProfile(false)); }) }; let buildprofileclean_action = { - let this_sender = sender.clone(); + withclones![sender]; RelmAction::::new_stateless(move |_| { - this_sender.input_sender().emit(Msg::BuildProfile(true)); + sender.input_sender().emit(Msg::BuildProfile(true)); }) }; @@ -617,27 +618,27 @@ impl SimpleComponent for App { }; let libsurvive_setup_action = { - let lss_sender = sender.clone(); + withclones![sender]; RelmAction::::new_stateless(move |_| { - lss_sender.input(Msg::OpenLibsurviveSetup); + sender.input(Msg::OpenLibsurviveSetup); }) }; let quit_action = { - let quit_sender = sender.clone(); + withclones![sender]; RelmAction::::new_stateless(move |_| { - quit_sender.input(Msg::Quit); + sender.input(Msg::Quit); }) }; let debug_view_toggle_action: RelmAction = { - let debugtoggle_sender = sender.clone(); + withclones![sender]; RelmAction::::new_stateful( &model.enable_debug_view, move |_, state| { let s = *state; *state = !s; - debugtoggle_sender.input(Msg::EnableDebugViewChanged(*state)); + sender.input(Msg::EnableDebugViewChanged(*state)); }, ) }; @@ -666,11 +667,13 @@ impl SimpleComponent for App { model.config.clone(), )); - let timer_sender = sender.clone(); - glib::timeout_add_local(Duration::from_millis(1000), move || { - timer_sender.input(Msg::ClockTicking); - return glib::Continue(true); - }); + { + withclones![sender]; + glib::timeout_add_local(Duration::from_millis(1000), move || { + sender.input(Msg::ClockTicking); + return glib::Continue(true); + }); + } ComponentParts { model, widgets } } diff --git a/src/ui/debug_view.rs b/src/ui/debug_view.rs index 9b7f086..b27c8db 100644 --- a/src/ui/debug_view.rs +++ b/src/ui/debug_view.rs @@ -1,5 +1,6 @@ use crate::log_level::LogLevel; use crate::log_parser::MonadoLog; +use crate::withclones; use gtk::prelude::*; use relm4::prelude::*; use relm4::{ComponentSender, SimpleComponent}; @@ -278,11 +279,11 @@ impl SimpleComponent for DebugView { model.scrolledwin = Some(widgets.scrolledwin.clone()); { - let dd_sender = sender.clone(); + withclones![sender]; widgets .log_level_dropdown .connect_selected_notify(move |dd| { - dd_sender.input(Self::Input::LogLevelChanged( + sender.input(Self::Input::LogLevelChanged( LogLevel::iter() .as_slice() .get(dd.selected() as usize)