Example #1
0
    void redo() {
        if (_redoStack.empty()) {
            rMessage() << "Redo: no redo available" << std::endl;
        }
        else {
            Operation* operation = _redoStack.back();
            rMessage() << "Redo: " << operation->_command << std::endl;

            startUndo();
            trackersRedo();
            operation->_snapshot.restore();
            finishUndo(operation->_command);
            _redoStack.pop_back();

            for (Observers::iterator i = _observers.begin(); i != _observers.end(); /* in-loop */) {
                Observer* observer = *(i++);
                observer->postRedo();
            }

            // Trigger the onPostUndo event on all scene nodes
            PostRedoWalker walker;
            GlobalSceneGraph().root()->traverse(walker);

            GlobalSceneGraph().sceneChanged();
        }
    }
Example #2
0
void redo(){
	if ( m_redo_stack.empty() ) {
		globalOutputStream() << "Redo: no redo available\n";
	}
	else
	{
		Operation* operation = m_redo_stack.back();
		globalOutputStream() << "Redo: " << operation->m_command.c_str() << "\n";

		startUndo();
		trackersRedo();
		operation->m_snapshot.restore();
		finishUndo( operation->m_command.c_str() );
		m_redo_stack.pop_back();
	}
}