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.
eepp articles
Use this page to find the guide for the task you are doing. The articles explain eepp's supported behavior; class headers and current source code remain the reference for API details.
| Task | Start here | Follow up with |
|---|---|---|
| Build a first UI with XML and CSS | UI introduction | Application UI authoring |
| Create or change an application screen | Application UI authoring | Native layout reference, CSS for application UI |
| Look up a CSS property, selector, or value | CSS specification | CSS for application UI when styling native widgets |
| Render HTML or Markdown content | HTML compatibility layer | CSS specification for supported properties and values |
| Preview and edit native XML/CSS layouts | UI editor | Application UI authoring, Runtime UI inspector |
| Inspect or automate a running UI | Runtime UI inspector | Application UI authoring for a layout debugging workflow |
| Bind application data or commands to widgets | UI data binding | Application UI authoring for screen structure |
| Make native widgets accessible | UI accessibility | Application UI authoring for screen structure |
| Add an interactive chart | UI charts | Application UI authoring for placement and sizing |
Work on eterm Kitty support |
Keyboard protocol, graphics protocol | The corresponding src/modules/eterm/ implementation and tests |
Native application widgets and HTML documents have different layout behavior. Start with
application UI authoring for toolbars, dialogs, forms, and editor windows;
start with HTML compatibility for UIWebView and UIMarkdownView.