pub enum Mutation<'a> {
Show 16 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,
}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.