Пример #1
0
 public void PopGroup()
 {
     lock (m_lockObject)
     {
         CUndoItem groupCache = m_currentUndoGroup;
         m_currentUndoGroup = null;
         Record(groupCache);
     }
 }
Пример #2
0
    public void Redo()
    {
        lock (m_lockObject)
        {
            bool bWasRecording = IsRecording;
            IsRecording = false;

            CUndoItem redoItem = RedoStack.Pop();
            redoItem.Redo();
            UndoStack.Push(redoItem);

            IsRecording = bWasRecording;

            OnItemRedone?.Invoke(this, redoItem);
        }
    }
Пример #3
0
    public void Undo()
    {
        lock (m_lockObject)
        {
            bool bWasRecording = IsRecording;
            IsRecording = false;

            CUndoItem undoItem = UndoStack.Pop();
            undoItem.Undo();
            RedoStack.Push(undoItem);

            IsRecording = bWasRecording;

            OnItemUndone?.Invoke(this, undoItem);
        }
    }
Пример #4
0
    public void Record(CUndoItem item)
    {
        if (!IsRecording)
        {
            return;
        }

        lock (m_lockObject)
        {
            if (m_currentUndoGroup != null)
            {
                m_currentUndoGroup.Items.Add(item);
                return;
            }

            UndoStack.Push(item);
            RedoStack.Clear();

            OnItemRecorded?.Invoke(this, item);
        }
    }
Пример #5
0
 public static void Record(CUndoItem item)
 {
     Instance?.Record(item);
 }