mirror of
https://github.com/SpartanJ/eepp.git
synced 2026-10-18 11:33:23 +03:00
Teardown and identity: - Detach native backends before scene children are destroyed and clear mRoot afterwards, fixing a use-after-free when an AT-SPI client is connected while a window closes. - Invalidate a deleted widget's subtree once, top-down, before OnClose handlers run (NODE_FLAG_DESTROYING). Descendants never walk into destroyed parents, and deleted identities cannot be re-registered. - Closing scenes expose no accessibility manager through either accessor. - Deleting widgets no client has seen allocates no identity and emits no events. - Ignore events from widgets not yet attached to a scene. Events: - Keep the order of state and structural events; coalesce only adjacent query-again hints. - Stop emitting per-widget BoundsChanged; bounds are queried on demand. - Report the Focused state and keyboard focus only on the projected focus owner, through a shared helper used by both paths. Model views: - Lazy child count and child queries, cached sibling indexes, selection and hit testing without enumerating rows. - Row identities follow inserted and removed rows; removed rows are pruned from native wrapper caches. - Expose the active cell editor as the child of the row or cell it edits. AT-SPI: - Correct state bits (EXPANDABLE/EXPANDED, SENSITIVE, CHECKABLE, SELECTABLE, READ_ONLY, SINGLE/MULTI_LINE, SELECTABLE_TEXT) and the password-text and panel roles. - Emit text-changed insert/delete, caret-moved and selection-changed events, diffed once per frame. Support line granularity, SetCaretOffset and selection editing. - Track clients by bus name so the active flag clears on disconnect. - Fix the I/O thread busy-spin and stranded dispatch backlog, flush queued signals, and type-check Properties.Set values. UIA: - Raise focus only for the focused element. - Defer UiaDisconnectProvider out of widget destruction. - Keep providers alive for in-flight cross-thread requests. - Reject unknown interfaces without a UI-thread round trip. - Require window-specific client activity. macOS: - Avoid repeated full node info builds. - Use sibling indexes and lazy child access. - Fix label/value deduplication for list items. Tests and docs: - Add regression tests for focus ownership, teardown, event ordering, lazy model identities, nested scenes and cell editors. - Extend the AT-SPI validation scripts and document the current performance characteristics and limitations.