From 468274a83a49ac9deca346761c17dbef97ff759a Mon Sep 17 00:00:00 2001 From: Filippos Karapetis Date: Thu, 20 Jun 2013 23:34:48 +0300 Subject: TINSEL: Clip mouse position to be within the screen (bug #3613765) The mouse cursor warping code via the keyboard allows the cursor to go outside the screen. We now limit the cursor's position to always stay within the screen --- engines/tinsel/tinsel.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/engines/tinsel/tinsel.h b/engines/tinsel/tinsel.h index 56fed3007f..5eb3b7d7b8 100644 --- a/engines/tinsel/tinsel.h +++ b/engines/tinsel/tinsel.h @@ -226,7 +226,11 @@ public: Graphics::Surface &screen() { return _screenSurface; } Common::Point getMousePosition() const { return _mousePos; } - void setMousePosition(const Common::Point &pt) { + void setMousePosition(Common::Point pt) { + // Clip mouse position to be within the screen coordinates + pt.x = CLIP(pt.x, 0, SCREEN_WIDTH - 1); + pt.y = CLIP(pt.y, 0, SCREEN_HEIGHT - 1); + int yOffset = TinselV2 ? (g_system->getHeight() - _screenSurface.h) / 2 : 0; g_system->warpMouse(pt.x, pt.y + yOffset); _mousePos = pt; -- cgit v1.2.3