mirror of
https://github.com/emilk/egui.git
synced 2026-06-26 14:49:06 -04:00
## Summary Adds `Context::interactive_rects_last_pass() -> Vec<Rect>`, an integration-facing helper that returns the same widget interaction rectangles egui uses for hit-testing in the last completed pass. The method filters out disabled widgets, non-interactive widgets, and layers that currently do not allow interaction. It also applies per-layer transforms so the returned rectangles are in global viewport coordinates. ## Motivation Some egui integrations need to declare platform-level input regions before pointer events can reach egui itself. A concrete example is a transparent or click-through overlay: the platform/windowing layer must know which parts of the overlay should receive input and which parts should pass through to whatever is underneath. Today egui keeps this information internally in `WidgetRects` and uses it for its own hit-testing, but integrations cannot enumerate those rectangles. Downstream integrations therefore need app-level side channels where each app manually reports its clickable rectangles. That is fragile because it duplicates data egui already has, is easy for applications to forget, and tends to go stale when widgets move or popups/menus appear. This method exposes only the already-derived, integration-relevant result instead of making `WidgetRects` itself part of the public API. ## Notes - The method uses the last completed pass because that is the same data egui uses for interaction at the start of the next pass. - Rectangles are returned in layer order for deterministic output. - Non-positive or non-finite rectangles are skipped. ## Verification - `cargo check -p egui` - `cargo test -p egui --lib` Co-authored-by: psyche314 <psyche314@users.noreply.github.com>