Enzo
Loading...
Searching...
No Matches
UndoDisabler.h
1#pragma once
2
3#include "UndoCommands.h"
4#include <algorithm>
5#include <optional>
6#include <vector>
7
9 public:
11 UndoDisabler() : blockedCommand_(std::nullopt) {
12 blockAllCount_++;
13 }
14
16 UndoDisabler(UndoCommandType command) : blockedCommand_(command) {
17 blockedCommands_.push_back(command);
18 }
19
21 if (blockedCommand_) {
22 auto it = std::find(blockedCommands_.begin(), blockedCommands_.end(), *blockedCommand_);
23 blockedCommands_.erase(it);
24 } else {
25 blockAllCount_--;
26 }
27 }
28
29 UndoDisabler(const UndoDisabler &) = delete;
30 UndoDisabler &operator=(const UndoDisabler &) = delete;
31
32 static bool isBlocked(UndoCommandType command) {
33 return blockAllCount_ > 0 ||
34 std::find(blockedCommands_.begin(), blockedCommands_.end(), command) !=
35 blockedCommands_.end();
36 }
37
38 private:
39 std::optional<UndoCommandType> blockedCommand_;
40 static inline std::vector<UndoCommandType> blockedCommands_;
41 static inline int blockAllCount_ = 0;
42};
Definition UndoDisabler.h:8
UndoDisabler()
Blocks all undo command types while this object is alive.
Definition UndoDisabler.h:11
UndoDisabler(UndoCommandType command)
Blocks a specific undo command type while this object is alive.
Definition UndoDisabler.h:16