pub struct CompositionEventData {
pub data: String,
pub cursor_begin: usize,
pub cursor_end: usize,
pub seat_id: u64,
}Expand description
Data carried by the three IME composition events.
Every desktop shell already runs a real IME client — Win32 WM_IME_* with
candidate-window positioning, macOS NSTextInputClient, Wayland
zwp_text_input_v3 preedit/commit, X11 XIM plus the xkb Compose layer —
and all of it terminated in the engine’s text cache. The built-in text
widgets therefore worked, but an app rendering its own composition (a code
editor, a terminal, a chat box with inline candidates) had no way to see
it, because the Composition* filters had no event to carry.
The shape is the intersection of what the platforms report, which is also
what W3C CompositionEvent and Wayland preedit_string agree on.
Fields§
§data: StringThe preedit (composition) text as it currently stands. Empty on
CompositionStart, and on CompositionEnd this is the committed
string — W3C defines compositionend.data as what was committed, not
what was pending.
cursor_begin: usizeByte offset of the selection/caret start within data. Wayland sends
this directly (preedit_string(text, cursor_begin, cursor_end));
Win32 derives it from GCS_CURSORPOS; macOS from the selectedRange
passed to setMarkedText:selectedRange:replacementRange:.
cursor_end: usizeByte offset of the selection/caret end within data. Equal to
cursor_begin for a collapsed caret.
seat_id: u64The SEAT whose input method this is (9b-ii-a-i-d-ii-c-i); the primary
is PRIMARY_POINTER_SEAT. The Focus filter delivers a seat’s
composition to that seat’s focused node.
Trait Implementations§
Source§impl Clone for CompositionEventData
impl Clone for CompositionEventData
Source§fn clone(&self) -> CompositionEventData
fn clone(&self) -> CompositionEventData
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more