diff options
Diffstat (limited to 'src/qregisters.cpp')
| -rw-r--r-- | src/qregisters.cpp | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/qregisters.cpp b/src/qregisters.cpp index 19590c9..7d18910 100644 --- a/src/qregisters.cpp +++ b/src/qregisters.cpp @@ -697,6 +697,39 @@ QRegisterClipboard::undo_exchange_string(QRegisterData ®) } void +QRegisterTable::UndoTokenRemoveGlobal::run(void) +{ + delete (QRegister *)QRegisters::globals.remove(reg); +} + +void +QRegisterTable::UndoTokenRemoveLocal::run(void) +{ + /* + * NOTE: QRegisters::locals should point + * to the correct table when the token is + * executed. + */ + delete (QRegister *)QRegisters::locals->remove(reg); +} + +void +QRegisterTable::undo_remove(QRegister *reg) +{ + if (!must_undo) + return; + + /* + * NOTE: Could also be solved using a virtual + * method and subclasses... + */ + if (this == &QRegisters::globals) + undo.push<UndoTokenRemoveGlobal>(reg); + else + undo.push<UndoTokenRemoveLocal>(reg); +} + +void QRegisterTable::insert_defaults(void) { /* general purpose registers */ |
