mirror of
https://github.com/emilk/egui.git
synced 2026-06-26 14:49:06 -04:00
Label text selection before the fix in a deferred viewport: <img width="484" height="172" alt="before_the_fix" src="https://github.com/user-attachments/assets/2214a7d9-9585-497d-9920-dd336a7df7ea" /> After the fix: <img width="484" height="172" alt="after_the_fix" src="https://github.com/user-attachments/assets/0999ed8e-22d4-4109-a5b5-f468f99e692d" /> ## What changed - Keep label text-selection state separate for each viewport. - Route pass lifecycle and label painting through the current `ViewportId`. - Drop inactive per-viewport state after its pass. - Add a regression test that verifies an unrelated viewport pass cannot clear a child viewport's selection, while the owning viewport still clears selections whose labels disappear. ## Why Issue #4758 identified that deferred viewports need independent label-selection state. PR #4760 fixed it by keying the temporary state by viewport. The plugin refactor in PR #7385 moved that state into one context-wide `LabelSelectionState`, which accidentally removed the viewport isolation. A pass in another viewport then fails to encounter the selected widgets and clears the selection. This restores the behavior of #4760 within the current plugin architecture. Applications do not need any special handling.