pub enum UndoFullOp<'r> {
Init {
redo: &'r mut bool,
},
Op(UndoOp),
Info {
info: &'r mut Option<Arc<dyn UndoInfo>>,
},
Merge {
next_data: &'r mut dyn Any,
prev_timestamp: DInstant,
within_undo_interval: bool,
merged: &'r mut bool,
},
}Expand description
Represents a full undo/redo action.
This can be used to implement undo and redo in a single closure. See UNDO.register_full_op and
UNDO.run_full_op for more details.
Variants§
Init
Initialize data in the execution context.
This is called once before the initial Op(UndoOp::Redo) call, it
can be used to skip registering no-ops.
Fields
Op(UndoOp)
Normal undo/redo.
Info
Collect display info.
Fields
Merge
Try merge the next_data onto self data (at the undone state).
Fields
§
next_data: &'r mut dyn AnyClosure data for the next undo action.
The data can be from any full undo closure action, only merge if the data
indicates that it comes from actions that can be covered by the self closure.
§
within_undo_interval: boolIf the prev_timestamp is within the UNDO.undo_interval. Undo actions
can choose to ignore this and merge anyway.
Trait Implementations§
Auto Trait Implementations§
impl<'r> Freeze for UndoFullOp<'r>
impl<'r> !RefUnwindSafe for UndoFullOp<'r>
impl<'r> !Send for UndoFullOp<'r>
impl<'r> !Sync for UndoFullOp<'r>
impl<'r> Unpin for UndoFullOp<'r>
impl<'r> !UnwindSafe for UndoFullOp<'r>
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
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more