From 7bc50e4540ca89cc07f941d055075219712b065d Mon Sep 17 00:00:00 2001 From: darkfi Date: Thu, 12 Feb 2026 15:44:11 +0100 Subject: [PATCH] app/menu: click X logic --- bin/app/src/ui/menu/mod.rs | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/bin/app/src/ui/menu/mod.rs b/bin/app/src/ui/menu/mod.rs index c7f77d232..66789f452 100644 --- a/bin/app/src/ui/menu/mod.rs +++ b/bin/app/src/ui/menu/mod.rs @@ -254,7 +254,7 @@ impl Menu { async fn handle_interaction( &self, - y: f32, + pos: Point, is_tap: bool, is_long_press_tap: bool, elapsed_ms: u128, @@ -266,7 +266,27 @@ impl Menu { let atom = &mut self.renderer.make_guard(gfxtag!("Menu::long_press")); self.redraw(atom); } else if is_tap { - if let Some(item_idx) = self.get_selected_item_index(y) { + let is_edit_mode = self.is_edit_mode.load(Ordering::Relaxed); + + if is_edit_mode { + let font_size = self.font_size.get(); + let handle_padding = self.handle_padding.get(); + let x_half_size = font_size * 0.7; + let x_center = handle_padding / 2.; + + if let Some(item_idx) = self.get_selected_item_index(pos.y) { + let item_name = self.items.get_str(item_idx).unwrap(); + + let x_min = x_center - x_half_size; + let x_max = x_center + x_half_size; + + if pos.x >= x_min && pos.x <= x_max { + info!(target: "app::menu", "X clicked for item: {item_name}"); + } else { + self.handle_selection(item_idx).await; + } + } + } else if let Some(item_idx) = self.get_selected_item_index(pos.y) { self.handle_selection(item_idx).await; } } @@ -687,7 +707,7 @@ impl UIObject for Menu { let is_long_press_tap = movement_dist < LONG_PRESS_EPSILON; let elapsed = info.start_instant.elapsed().as_millis(); - self.handle_interaction(mouse_pos.y, is_click, is_long_press_tap, elapsed).await; + self.handle_interaction(mouse_pos, is_click, is_long_press_tap, elapsed).await; true } @@ -788,7 +808,7 @@ impl UIObject for Menu { (is_tap, is_long_press_tap, elapsed) }; - self.handle_interaction(touch_pos.y, is_tap, is_long_press_tap, elapsed).await; + self.handle_interaction(touch_pos, is_tap, is_long_press_tap, elapsed).await; self.end_touch_phase(touch_pos.y); true