diff options
author | Filippos Karapetis | 2013-06-20 23:34:48 +0300 |
---|---|---|
committer | Filippos Karapetis | 2013-06-20 23:34:48 +0300 |
commit | 468274a83a49ac9deca346761c17dbef97ff759a (patch) | |
tree | bb81a00c3a1fdba87fffde8cf150c3ec37de25dd /engines/tinsel | |
parent | 125b146b06945eb738f8d0358ce1c1ede1208f81 (diff) | |
download | scummvm-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/tinsel')
-rw-r--r-- | engines/tinsel/tinsel.h | 6 |
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; |