diff --git a/src/Application/States/TextureMappingState.cpp b/src/Application/States/TextureMappingState.cpp index 8d55fa3..248b1ef 100644 --- a/src/Application/States/TextureMappingState.cpp +++ b/src/Application/States/TextureMappingState.cpp @@ -90,6 +90,7 @@ void TextureMappingState::onBackgroundPressed(Application * app, GuiBackgroundEv void TextureMappingState::onMousePressed(Application * app, ofMouseEventArgs & args){ _clickPosition = ofPoint(args.x, args.y); + _prevCanvasTranslate = _canvasTranslate; // Alter mouse event args to match canvas translation args.x -= _canvasTranslate.x; @@ -100,6 +101,15 @@ void TextureMappingState::onMousePressed(Application * app, ofMouseEventArgs & a void TextureMappingState::onMouseReleased(Application * app, ofMouseEventArgs & args){ _bTranslateCanvas = false; + // If translation has happened, create an undoable command + if(_prevCanvasTranslate != _canvasTranslate){ + app->getCmdManager()->exec( + new TranslateCanvasCmd( + app, + _prevCanvasTranslate, + _canvasTranslate)); + } + _clickCanvasTranslate = _canvasTranslate; // Alter mouse event args to match canvas translation diff --git a/src/Application/States/TextureMappingState.h b/src/Application/States/TextureMappingState.h index de3c021..10a0c91 100644 --- a/src/Application/States/TextureMappingState.h +++ b/src/Application/States/TextureMappingState.h @@ -10,6 +10,7 @@ #include "SetNextSourceCmd.h" #include "SelNextSurfaceCmd.h" #include "ToggleAnimatedSourceCmd.h" +#include "TranslateCanvasCmd.h" #include "Gui.h" namespace ofx { @@ -40,6 +41,7 @@ class TextureMappingState : public ApplicationBaseState { ofPoint _clickPosition; ofPoint _canvasTranslate; + ofPoint _prevCanvasTranslate; // Canvas translate before TranslateCanvasCmd command exec ofPoint _clickCanvasTranslate; };