Files
msime-windows/server/docs/ui-backends.md
T
Evan Hu 05036a763d docs: describe one repository instead of six
The product README was under windows/ after the move, but it was never a component readme: it is the download page, the feature guide and the contribution guide for the whole product, so it goes back to the root and windows/ gets a real component readme.

AGENTS.md at the root now carries the repository map, the component boundaries that used to be cross-repository rules, and the release process, since the scripts that process drives live at the root. The component files keep what is genuinely theirs and say which paths they are relative to. References that named sibling repositories now name sibling directories, and the lock documentation records that Server, the pages, the GUI framework and the installer are no longer inputs to pin.
2026-09-06 02:40:51 +09:00

2.2 KiB
Raw Blame History

UI ownership and compatibility

Surface Long-term backend Compatibility scope
Candidate, floating toolbar, tray menu msimeui native Direct2D/DirectWrite appearance.ui_backend=webview2 explicitly selects existing WebView skins
Settings UiHtml hosted by the separate native settings application Small-window backend settings never change this host
Keyboard, handwriting, emoji and voice panels Their existing native application/presenter Shared actions/configuration stay in Server; panels do not own input sessions

window/ui_backend_policy.h owns backend selection. D2D is the default; existing WebView aliases remain readable. Unknown/retired stored values migrate to D2D, while new invalid configuration writes fail. A backend setting applies at process startup, preserving the existing controller lifetime and restart behavior.

The candidate worker resolves output text, auxiliary codes, source badges and translations once into CandidateViewItem. Both native and Web renderers consume these values. HTML escaping and the legacy comma framing are confined to the Web adapter; native rendering receives plain text. Both click paths enter the existing EnqueueCandidateUiAction queue with the same focus owner checks and action policy. The ten-entry mouse range is distinct from the 1–9 keyboard shortcuts.

WebView small windows remain a compatibility backend for existing skins. Their removal requires: a supported conversion path for CSS-dependent external skins; parity for candidate/context-menu actions, translations and accessibility; and recorded mixed-DPI, cold-start and signed/uiAccess host validation of the native replacement. Until those conditions are met, keep compatibility tests and do not silently reinterpret a configured WebView skin as a native skin. New business behavior belongs in shared actions/session/view models, not either renderer.

Sciter is not an active product backend. The old unreferenced handwritten D2D prototype is removed; native small windows use msimeui presenters. The msimeui library owns generic controls and rendering, never Server configuration, pipe sessions, dictionary access, or global input state.