From 1d5220ef3fb5ed1a869d88ee67b28cb0433f8578 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Fri, 5 Feb 2016 19:37:13 +0100 Subject: WAGE: Implement Undo action --- engines/wage/gui.cpp | 12 +++++++++++- engines/wage/gui.h | 2 ++ engines/wage/menu.cpp | 2 ++ 3 files changed, 15 insertions(+), 1 deletion(-) (limited to 'engines') diff --git a/engines/wage/gui.cpp b/engines/wage/gui.cpp index cd4a62bc20..d158d480f8 100644 --- a/engines/wage/gui.cpp +++ b/engines/wage/gui.cpp @@ -832,8 +832,18 @@ void Gui::actionCopy() { } void Gui::actionPaste() { - _engine->_inputText = _clipboard; + _undobuffer = _engine->_inputText; + _engine->_inputText += _clipboard; drawInput(); + + _menu->enableCommand(kMenuEdit, kMenuActionUndo, true); +} + +void Gui::actionUndo() { + _engine->_inputText = _undobuffer; + drawInput(); + + _menu->enableCommand(kMenuEdit, kMenuActionUndo, false); } } // End of namespace Wage diff --git a/engines/wage/gui.h b/engines/wage/gui.h index 7270a782ce..6d33abb948 100644 --- a/engines/wage/gui.h +++ b/engines/wage/gui.h @@ -106,6 +106,7 @@ public: void actionCopy(); void actionPaste(); + void actionUndo(); private: void paintBorder(Graphics::Surface *g, Common::Rect &r, WindowType windowType); @@ -160,6 +161,7 @@ private: int _selectionEndY; Common::String _clipboard; + Common::String _undobuffer; }; } // End of namespace Wage diff --git a/engines/wage/menu.cpp b/engines/wage/menu.cpp index 2a1f6e62e4..83e610a92d 100644 --- a/engines/wage/menu.cpp +++ b/engines/wage/menu.cpp @@ -516,6 +516,8 @@ void Menu::executeCommand(MenuSubItem *subitem) { case kMenuActionQuit: case kMenuActionUndo: + _gui->actionUndo(); + break; case kMenuActionCut: warning("STUB: Unhandled shortcut"); break; -- cgit v1.2.3