pub struct Presence {
pub id: WidgetId,
pub visible: bool,
pub keep_rendered: bool,
pub enter: Vec<MotionTrack>,
pub exit: Vec<MotionTrack>,
pub child: Widget,
pub clip_to_bounds: bool,
pub repaint_boundary: bool,
pub inert_while_exiting: bool,
}Expand description
Presence wrapper that keeps a child mounted while enter/exit tracks run.
Use this when a widget must animate out after its visible state becomes
false. If both enter and exit tracks are empty, presence changes are applied
immediately.
ⓘ
use fission::motion::{fade, Presence};
use fission::{Text, WidgetId};
let widget = Presence {
id: WidgetId::explicit("details_panel"),
visible: state.show_details,
enter: fade(),
exit: fission::motion::reverse_tracks_for_exit(&fade()),
child: Text::new("Details").into(),
..Default::default()
};Fields§
§id: WidgetIdStable identity for the presence slot.
visible: boolWhether the child is logically visible in the current build.
keep_rendered: boolWhether to keep rendering the child after exit completes.
enter: Vec<MotionTrack>Tracks used when entering.
exit: Vec<MotionTrack>Tracks used when exiting.
child: WidgetChild controlled by this presence wrapper.
clip_to_bounds: boolWhether to clip visual overflow during presence motion.
repaint_boundary: boolWhether shells should treat this as a repaint/composite boundary.
inert_while_exiting: boolWhether shells should suppress interaction while the child exits.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Presence
impl<'de> Deserialize<'de> for Presence
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl !RefUnwindSafe for Presence
impl !UnwindSafe for Presence
impl Freeze for Presence
impl Send for Presence
impl Sync for Presence
impl Unpin for Presence
impl UnsafeUnpin for Presence
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.