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 + 'static),
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 + 'static)
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> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§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
.§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
.§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.§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.§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> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§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