summaryrefslogtreecommitdiff
path: root/src/interface/Engine.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/interface/Engine.cpp')
-rw-r--r--src/interface/Engine.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/interface/Engine.cpp b/src/interface/Engine.cpp
index 044b5e5..aabbc62 100644
--- a/src/interface/Engine.cpp
+++ b/src/interface/Engine.cpp
@@ -22,6 +22,7 @@ Engine::Engine():
mouseyp_(0),
FpsLimit(60.0f),
windows(stack<Window*>()),
+ mousePositions(stack<Point>()),
lastBuffer(NULL),
prevBuffers(stack<pixel*>()),
windowTargetPosition(0, 0),
@@ -98,6 +99,7 @@ void Engine::ShowWindow(Window * window)
#endif
windows.push(state_);
+ mousePositions.push(ui::Point(mousex_, mousey_));
}
if(state_)
state_->DoBlur();
@@ -125,6 +127,17 @@ void Engine::CloseWindow()
if(state_)
state_->DoFocus();
+
+ ui::Point mouseState = mousePositions.top();
+ mousePositions.pop();
+ if(state_)
+ {
+ mousexp_ = mouseState.X;
+ mouseyp_ = mouseState.Y;
+ state_->DoMouseMove(mousex_, mousey_, mousex_ - mousexp_, mousey_ - mouseyp_);
+ mousexp_ = mousex_;
+ mouseyp_ = mousey_;
+ }
}
else
{