Text input is a first-class feature of XenoAtom.Terminal.UI: you get a shared editing engine across multiple controls, with selection, clipboard, undo/redo, scrolling, and integrated Find/Replace.
These controls share the same editing engine and most of the same user experience:
Other controls also use the same infrastructure for parts of their UX:
Across the editors above you typically get:
Ctrl+Z / Ctrl+R) integrated with programmatic edits.ScrollViewer via IScrollable.Most controls expose their shortcuts as commands, so a focused editor can be discoverable via a CommandBar.
Text editors support undo/redo:
Ctrl+Z: undoCtrl+R: redoSee Undo/Redo.
TextArea includes a built-in Find / Replace UI powered by the reusable SearchReplacePopup:
Ctrl+F: FindCtrl+H: ReplaceThe same popup component is also used by other controls (for example, LogControl hosts it in Find-only mode).
Find/Replace is hosted by the editor control and rendered as a window-layer popup in fullscreen apps. The host keeps the popup
anchored to the editor and forwards query/navigation updates through an ISearchReplaceTarget.
Text editors that can extend beyond their viewport implement IScrollable, so they integrate naturally with ScrollViewer:
new ScrollViewer(new TextArea(longText))
The text editing stack is split into a few focused parts:
TextEditorBase: shared control base for editors (focus, commands, cursor integration).TextEditorCore: editing behavior (navigation, selection, word operations, clipboard, undo/redo, search matches).ITextDocument: document abstraction for storage and edits.
TextDocument: a simple document implementation.DynamicTextDocument: bridges a bindable Text property to the editor engine.ScrollModel: viewport/extent model used by IScrollable controls and ScrollViewer.The caret is rendered using the terminal cursor (not a fake reverse-video “block” cell), which keeps rendering stable and works well with accessibility settings in many terminals.