redo method
void
redo()
Implementation
void redo() {
if (!isHistoryEnabled) {
// History is disabled, therefore undo/redo are disabled.
return;
}
editorEditsLog.info("Running redo");
if (_future.isEmpty) {
return;
}
editorEditsLog.finer("Future transaction:");
for (final command in _future.last.commands) {
editorEditsLog.finer(" - ${command.runtimeType}");
}
for (final editable in context._resources.values) {
// Don't let editables notify listeners during redo.
editable.onTransactionStart();
}
final commandTransaction = _future.removeLast();
final edits = <EditEvent>[];
for (final command in commandTransaction.commands) {
final commandEdits = _executeCommand(command);
edits.addAll(commandEdits);
}
_history.add(commandTransaction);
editorEditsLog.info("Finished redo");
editorEditsLog.finer("Ending transaction on all editables");
for (final editable in context._resources.values) {
// Let editables start notifying listeners again.
editable.onTransactionEnd(edits);
}
// TODO: find out why this is needed. If it's not, remove it.
_notifyListeners([]);
}