aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--undo.cpp19
-rw-r--r--undo.h15
2 files changed, 12 insertions, 22 deletions
diff --git a/undo.cpp b/undo.cpp
index 7a58c92..c6b30ff 100644
--- a/undo.cpp
+++ b/undo.cpp
@@ -10,8 +10,6 @@
UndoStack undo;
-UndoToken::UndoToken() : pos(strlen(cmdline)) {}
-
void
UndoTokenMessage::run(void)
{
@@ -19,20 +17,21 @@ UndoTokenMessage::run(void)
}
void
-UndoStack::push_msg(unsigned int iMessage, uptr_t wParam, sptr_t lParam)
+UndoStack::push(UndoToken *token)
{
- push(new UndoTokenMessage(iMessage, wParam, lParam));
+ if (enabled) {
+ token->pos = strlen(cmdline);
+ SLIST_INSERT_HEAD(&head, token, tokens);
+ } else {
+ delete token;
+ }
}
-#if 0
-template <typename Type>
void
-UndoStack::push_var(Type &variable, Type value)
+UndoStack::push_msg(unsigned int iMessage, uptr_t wParam, sptr_t lParam)
{
- UndoToken *token = new UndoTokenVariable<Type>(variable, value);
- SLIST_INSERT_HEAD(&head, token, tokens);
+ push(new UndoTokenMessage(iMessage, wParam, lParam));
}
-#endif
void
UndoStack::pop(gint pos)
diff --git a/undo.h b/undo.h
index 5b955ab..055fc3d 100644
--- a/undo.h
+++ b/undo.h
@@ -14,8 +14,6 @@ public:
gint pos;
- UndoToken();
-
virtual void run() = 0;
};
@@ -75,25 +73,18 @@ public:
};
extern class UndoStack {
- SLIST_HEAD(undo_head, UndoToken) head;
+ SLIST_HEAD(Head, UndoToken) head;
public:
bool enabled;
- UndoStack(bool _enabled = true) : enabled(_enabled)
+ UndoStack(bool _enabled = false) : enabled(_enabled)
{
SLIST_INIT(&head);
}
~UndoStack();
- inline void
- push(UndoToken *token)
- {
- if (enabled)
- SLIST_INSERT_HEAD(&head, token, tokens);
- else
- delete token;
- }
+ void push(UndoToken *token);
void push_msg(unsigned int iMessage,
uptr_t wParam = 0, sptr_t lParam = 0);