pub enum Mutation<'a> {
Show 22 variants
Create {
node_id: u32,
widget: WidgetKind,
},
SetProp {
node_id: u32,
property: PropertyKind,
value: PropertyValue<'a>,
},
SetModifier {
node_id: u32,
index: u16,
modifier: Modifier,
},
Insert {
parent_id: u32,
node_id: u32,
index: u32,
},
Move {
parent_id: u32,
node_id: u32,
index: u32,
},
Remove {
node_id: u32,
},
SetText {
node_id: u32,
text: &'a str,
selection: Option<Selection>,
},
AppendText {
node_id: u32,
text: &'a str,
},
SetTheme(Theme),
SetWindow(Window),
RegisterAsset {
asset_id: u32,
kind: AssetKind,
bytes: &'a [u8],
},
ReleaseAsset {
asset_id: u32,
},
ShowMessage {
handler_id: u64,
text: &'a str,
action: &'a str,
duration: MessageDuration,
},
PostNotification {
key: &'a str,
title: &'a str,
body: &'a str,
channel: &'a str,
action_1: &'a str,
action_2: &'a str,
importance: NotificationImportance,
presentation: NotificationPresentation,
},
WithdrawNotification {
key: &'a str,
},
RequestNotificationPermission,
EditCode {
node_id: u32,
request_id: u32,
base_version: u32,
start_line: u32,
start_column: u32,
end_line: u32,
end_column: u32,
text: &'a str,
},
StartAnimation(Animation<'a>),
ControlAnimation {
node_id: u32,
animation_id: u32,
property: AnimatedProperty,
slot: u8,
op: AnimationControl,
at_time_nanos: u64,
},
SetSelection {
node_id: u32,
base_version: u32,
anchor_line: u32,
anchor_column: u32,
active_line: u32,
active_column: u32,
},
RevealRange {
node_id: u32,
base_version: u32,
start_line: u32,
start_column: u32,
end_line: u32,
end_column: u32,
align: RevealAlign,
},
SetFolded {
node_id: u32,
start_line: u32,
collapsed: bool,
},
}Variants§
Create
SetProp
SetModifier
Insert
Move
Remove
SetText
AppendText
Appends the streamed tail to a Text node instead of resending the whole string.
SetTheme(Theme)
The root theme. Sent once as the first record of the initial batch.
SetWindow(Window)
What the application asked of its own window.
Written once per rebuild beside the theme, and read by the Renderer before it
stands the window up: compose_rust_host_init answers with the first batch, so
the setting is in hand before there is a window to apply it to. Platforms where
the window is not ours ignore it, which is not an error but an absence of anywhere
to put it.
RegisterAsset
Hands the Renderer the bytes of one asset. The Renderer copies them into its own cache inside this call, because the batch buffer is only valid for the call that carries it and an image has to outlive the frame that draws it.
ReleaseAsset
Drops an asset from the Renderer’s cache. The Host owns the lifetime.
ShowMessage
Says a sentence to the user once. It is not a node, because the Host would then have to hold “showing until four seconds from now” and run a render to take it away again. How long it stays, where it sits and what happens when a second one arrives while the first is up are all the Renderer’s.
handler_id is what the action label reports when it is pressed, or 0 when the
message has no action, in which case action is empty too.
PostNotification
Asks the platform to show one notification outside the window.
Not a node, for the same reason a message is not: it outlives the component that
posted it, and when it goes away depends on what the user does in the notification
centre, which the Host never hears about. Posting again under the same key
replaces it. An empty key asks the Renderer to name it, and such a notification
can be neither replaced nor withdrawn. An empty action label means no button.
WithdrawNotification
Takes back the notification posted under key, if it is still showing.
RequestNotificationPermission
Asks the platform for permission to show notifications. It carries nothing: the answer comes back as a permission event.
EditCode
Replaces a range of a code editor’s document, as it stood at base_version, with
text.
The Renderer owns the document, so this is a request and not an assignment: where
the reader has typed since that version the range is moved along with what they
typed, and where they typed in the same place the edit is refused and
CodeEditRejected names request_id. An edit that is applied comes back as an
ordinary CodeChanged, so the version stays one sequence whoever made the edit.
Fields
StartAnimation(Animation<'a>)
Hands the Renderer one animation to play on its own frame clock until it ends. Nothing crosses the boundary while it plays unless it asked for events.
ControlAnimation
Pauses, resumes or cancels one animation the Renderer is playing. A key the Renderer does not hold, or an id that is not the one it holds, is left alone: an animation that ended on its own is not an error to stop.
Fields
property: AnimatedPropertySetSelection
Puts a code editor’s selection between two places in the document as it stood at
base_version. Both ends are moved along with whatever was typed since, and an end
that is outside the document, or between the two halves of a pair, drops the
command and comes back as a protocol error.
Fields
RevealRange
Scrolls a code editor until a range of the document, as it stood at base_version,
is on screen. A range inside a folded stretch unfolds it first.
Fields
align: RevealAlignSetFolded
Folds or unfolds the stretch of a code editor that starts on start_line.