From 9aab4412216c14e6ccb8f46097701f1bec636bfd Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Thu, 4 Jan 2024 10:14:59 +0100 Subject: [PATCH] Fix: don't open context menu on drag --- crates/egui/src/menu.rs | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/crates/egui/src/menu.rs b/crates/egui/src/menu.rs index bd7305ed80e..03c4ebce6c2 100644 --- a/crates/egui/src/menu.rs +++ b/crates/egui/src/menu.rs @@ -367,20 +367,18 @@ impl MenuRoot { let response = response.interact(Sense::click()); response.ctx.input(|input| { let pointer = &input.pointer; - if pointer.any_pressed() { - if let Some(pos) = pointer.interact_pos() { - let mut destroy = false; - let mut in_old_menu = false; - if let Some(root) = root { - in_old_menu = root.menu_state.read().area_contains(pos); - destroy = root.id == response.id; - } - if !in_old_menu { - if response.hovered() && pointer.secondary_down() { - return MenuResponse::Create(pos, id); - } else if (response.hovered() && pointer.primary_down()) || destroy { - return MenuResponse::Close; - } + if let Some(pos) = pointer.interact_pos() { + let mut in_old_menu = false; + let mut destroy = false; + if let Some(root) = root { + in_old_menu = root.menu_state.read().area_contains(pos); + destroy = !in_old_menu && pointer.any_pressed() && root.id == response.id; + } + if !in_old_menu { + if response.hovered() && response.secondary_clicked() { + return MenuResponse::Create(pos, id); + } else if (response.hovered() && pointer.primary_down()) || destroy { + return MenuResponse::Close; } } }