Enum zng_ext_undo::UndoFullOp
source · 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 Any
Closure 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: bool
If 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