From 1dbb4d1f2a90f73238d3459f8d5d0a449110802a Mon Sep 17 00:00:00 2001 From: Antoine Beyeler Date: Wed, 14 Feb 2024 08:54:48 +0100 Subject: [PATCH] Avoid interacting twice when not required --- crates/egui/src/response.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/crates/egui/src/response.rs b/crates/egui/src/response.rs index 073ab5615b2..2cef13e93f6 100644 --- a/crates/egui/src/response.rs +++ b/crates/egui/src/response.rs @@ -610,6 +610,13 @@ impl Response { /// ``` #[must_use] pub fn interact(&self, sense: Sense) -> Self { + // Test if we must sense something new compared to what we have already sensed. If not, then + // we can return early. This may avoid unnecessarily "masking" some widgets with unneeded + // interactions. + if (self.sense | sense) == self.sense { + return self.clone(); + } + self.ctx.interact_with_hovered( self.layer_id, self.id,