aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorFilippos Karapetis2013-06-20 23:34:48 +0300
committerFilippos Karapetis2013-06-20 23:34:48 +0300
commit468274a83a49ac9deca346761c17dbef97ff759a (patch)
treebb81a00c3a1fdba87fffde8cf150c3ec37de25dd /engines
parent125b146b06945eb738f8d0358ce1c1ede1208f81 (diff)
downloadscummvm-rg350-468274a83a49ac9deca346761c17dbef97ff759a.tar.gz
scummvm-rg350-468274a83a49ac9deca346761c17dbef97ff759a.tar.bz2
scummvm-rg350-468274a83a49ac9deca346761c17dbef97ff759a.zip
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
Diffstat (limited to 'engines')
-rw-r--r--engines/tinsel/tinsel.h6
1 files changed, 5 insertions, 1 deletions
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<int16>(pt.x, 0, SCREEN_WIDTH - 1);
+ pt.y = CLIP<int16>(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;