LVRS Document Viewer
components/control/TextEditor.svx
Path: components/control/TextEditor.svx
TextEditor
Location: qml/components/control/input/TextEditor.qml
TextEditor is the multi-line rich/plain editor with optional rendered preview output.
Purpose
- Provide stable multi-line editing in fixed viewport height.
- Support mode-driven text normalization and preview rendering.
- Isolate nested scroll and IME behavior for robust input handling.
API
Mode constants:
plainTextModemarkdownModerichTextMode
Mode/control properties:
modeenforceModeDefaultswrapModetextFormat
Editing API:
text,placeholderText,readOnlycursorPosition,selectionStart,selectionEndselectByMouse,persistentSelection,overwriteMode
Layout/preview:
fieldMinHeight,editorHeight,resolvedEditorHeightshowRenderedOutput,outputMinHeight,previewHeightshowScrollBar,autoFocusOnPress
Signals/methods:
textEdited(text)submitted(text)forceEditorFocus(),insertText(value),clear(),undo(),redo(),submit()
Usage
import LVRS 1.0 as LV
LV.TextEditor {
mode: markdownMode
editorHeight: 240
showRenderedOutput: true
onSubmitted: save(text)
}
How It Works
- Editing happens inside
Flickablewith fixed outer height; content grows internally. Ctrl+EnterorCmd+Enteremitssubmitted.- Preview text is produced through
TextMarkup.renderHtml(text). InputMethodGuardandWheelScrollGuardare embedded for composition safety and scroll isolation.
Advanced Example: Submission Shortcut Workflow
import LVRS 1.0 as LV
LV.TextEditor {
mode: plainTextMode
onSubmitted: function(text) {
console.log("submit", text.length)
}
}
Submit is triggered by Ctrl+Enter or Cmd+Enter.
Practical Notes
- Keep preview enabled only when users need immediate rendered feedback.
- For large documents, monitor scroll behavior and ensure parent containers do not also capture wheel events.
Recipe: Markdown Preview Toggle
import LVRS 1.0 as LV
Item {
property bool previewOn: true
LV.TextEditor {
mode: markdownMode
showRenderedOutput: previewOn
}
}
Failure Pattern
Large markdown previews can increase layout work. For very large documents, provide manual preview toggle or lazy preview update policy.