diff --git a/examples/worf-warden/Cargo.toml b/examples/worf-warden/Cargo.toml index 543c84f..0f7af7b 100644 --- a/examples/worf-warden/Cargo.toml +++ b/examples/worf-warden/Cargo.toml @@ -7,3 +7,8 @@ edition = "2024" worf = {path = "../../worf"} enigo = "0.3.0" anyhow = "1.0.98" + +# todo re-add this +#[features] +#default = [] # nothing enabled by default +#warden = ["worf-warden"] diff --git a/examples/worf-warden/src/main.rs b/examples/worf-warden/src/main.rs index 02d5aac..52cabe7 100644 --- a/examples/worf-warden/src/main.rs +++ b/examples/worf-warden/src/main.rs @@ -1,5 +1,4 @@ use std::process::Command; -use std::thread; use std::thread::sleep; use std::time::Duration; use enigo::{Enigo, Keyboard}; diff --git a/worf/src/lib/gui.rs b/worf/src/lib/gui.rs index ee17a3e..127342c 100644 --- a/worf/src/lib/gui.rs +++ b/worf/src/lib/gui.rs @@ -953,24 +953,13 @@ where T: Clone + Send, { if let Some(selected_item) = item { - close_gui(ui.app.clone(), ui.window.clone(), &meta.config); - if let Err(e) = meta.selected_sender.send(Ok(Selection { - menu: selected_item.clone(), - custom_key: custom_key.map(|k| k.clone()), - })) { - log::error!("failed to send message {e}"); - } - - close_gui(&ui.app); + send_selected_item(&ui, meta, custom_key, &selected_item); return Ok(()); } else if let Some(s) = ui.main_box.selected_children().into_iter().next() { let list_items = ui.menu_rows.lock().unwrap(); let item = list_items.get(&s); - if let Some(item) = item { - if let Err(e) = meta.selected_sender.send(Ok(item.clone())) { - log::error!("failed to send message {e}"); - } - close_gui(&ui.app); + if let Some(selected_item) = item { + send_selected_item(&ui, meta, custom_key, selected_item); return Ok(()); } } @@ -988,19 +977,26 @@ where visible: true, }; - if let Err(e) = meta.selected_sender.send(Ok(Selection { - menu: item.clone(), - custom_key: custom_key.map(|k| k.clone()), - })) { - log::error!("failed to send message {e}"); - } - close_gui(&ui.app); + send_selected_item(&ui, meta, custom_key, &item); Ok(()) } else { Err("selected item cannot be resolved".to_owned()) } } +fn send_selected_item(ui: &&UiElements, meta: &MetaData, custom_key: Option<&KeyBinding>, selected_item: &MenuItem) +where + T: Clone + Send +{ + close_gui(&ui.app); + if let Err(e) = meta.selected_sender.send(Ok(Selection { + menu: selected_item.clone(), + custom_key: custom_key.cloned(), + })) { + log::error!("failed to send message {e}"); + } +} + fn add_menu_item( ui: &Rc>, meta: &Rc>, diff --git a/worf/src/lib/mode.rs b/worf/src/lib/mode.rs index 50601a5..57ae8e5 100644 --- a/worf/src/lib/mode.rs +++ b/worf/src/lib/mode.rs @@ -771,7 +771,7 @@ pub fn auto(config: &Config) -> Result<(), Error> { None, ); - if let Ok(mut selection_result) = selection_result { + if let Ok(selection_result) = selection_result { let mut selection_result = selection_result.menu; if let Some(data) = &selection_result.data { match data {