From ee2214577999192986b6a4efbdd2cf44b46a8ac0 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Mon, 10 Jun 2024 13:22:35 +0200 Subject: [PATCH] Don't hover things under tooltips --- crates/egui/src/containers/area.rs | 5 ----- crates/egui/src/context.rs | 1 - crates/egui/src/memory.rs | 13 ++++++------- crates/egui_demo_lib/src/demo/tooltips.rs | 7 +++++++ 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/crates/egui/src/containers/area.rs b/crates/egui/src/containers/area.rs index f3a66cddd..83a98dcbb 100644 --- a/crates/egui/src/containers/area.rs +++ b/crates/egui/src/containers/area.rs @@ -24,9 +24,6 @@ pub struct AreaState { /// Last known size. pub size: Vec2, - /// If false, clicks goes straight through to what is behind us. Useful for tooltips etc. - pub interactable: bool, - /// At what time was this area first shown? /// /// Used to fade in the area. @@ -397,12 +394,10 @@ impl Area { pivot_pos: default_pos.unwrap_or_else(|| automatic_area_position(ctx)), pivot, size, - interactable, last_became_visible_at: ctx.input(|i| i.time), } }); state.pivot_pos = new_pos.unwrap_or(state.pivot_pos); - state.interactable = interactable; // TODO(emilk): if last frame was sizing pass, it should be considered invisible for smmother fade-in let visible_last_frame = ctx.memory(|mem| mem.areas().visible_last_frame(&layer_id)); diff --git a/crates/egui/src/context.rs b/crates/egui/src/context.rs index 4e031b215..203516c55 100644 --- a/crates/egui/src/context.rs +++ b/crates/egui/src/context.rs @@ -498,7 +498,6 @@ impl ContextImpl { pivot_pos: screen_rect.left_top(), pivot: Align2::LEFT_TOP, size: screen_rect.size(), - interactable: true, last_became_visible_at: f64::NEG_INFINITY, }, ); diff --git a/crates/egui/src/memory.rs b/crates/egui/src/memory.rs index 84925e1cf..14a595109 100644 --- a/crates/egui/src/memory.rs +++ b/crates/egui/src/memory.rs @@ -994,14 +994,13 @@ impl Areas { if self.is_visible(layer) { if let Some(state) = self.areas.get(&layer.id) { let mut rect = state.rect(); - if state.interactable { - if let Some(transform) = layer_transforms.get(layer) { - rect = *transform * rect; - } - if rect.contains(pos) { - return Some(*layer); - } + if let Some(transform) = layer_transforms.get(layer) { + rect = *transform * rect; + } + + if rect.contains(pos) { + return Some(*layer); } } } diff --git a/crates/egui_demo_lib/src/demo/tooltips.rs b/crates/egui_demo_lib/src/demo/tooltips.rs index f40edd541..d540ae5e9 100644 --- a/crates/egui_demo_lib/src/demo/tooltips.rs +++ b/crates/egui_demo_lib/src/demo/tooltips.rs @@ -81,5 +81,12 @@ impl super::View for Tooltips { .on_hover_ui(tooltip_ui) .on_disabled_hover_ui(disabled_tooltip_ui); }); + + ui.separator(); // --------------------------------------------------------- + + ui.label("This widget has a tooltip that fills the screen") + .on_hover_ui(|ui| { + ui.allocate_exact_size(ui.ctx().screen_rect().size() * 0.8, egui::Sense::hover()); + }); } }