From d5cd175b1628948ad7ff9bd7ef41e07b9d52672c Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Fri, 13 Dec 2024 08:15:57 +0100 Subject: [PATCH] Only mark interactive widgets as hovered, if clicking would interact --- crates/egui/src/interaction.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/crates/egui/src/interaction.rs b/crates/egui/src/interaction.rs index 7cbadbf11..edc6b5dd9 100644 --- a/crates/egui/src/interaction.rs +++ b/crates/egui/src/interaction.rs @@ -249,7 +249,7 @@ pub(crate) fn interact( .copied() .collect() } else { - // We may be hovering a an interactive widget or two. + // We may be hovering an interactive widget or two. // We must also consider the case where non-interactive widgets // are _on top_ of an interactive widget. // For instance: a label in a draggable window. @@ -275,6 +275,11 @@ pub(crate) fn interact( let mut hovered: IdSet = hits.click.iter().chain(&hits.drag).map(|w| w.id).collect(); for w in &hits.contains_pointer { + if w.sense.click || w.sense.drag { + // Interactive widgets are only marked as hover if they are the ones + // selected by the hit-test, and those have already been included. + continue; // TODO: what implications does this have for tooltips? :/ + } if top_interactive_order <= order(w.id).unwrap_or(0) { hovered.insert(w.id); }