aboutsummaryrefslogtreecommitdiff
path: root/engines/wage/gui.cpp
diff options
context:
space:
mode:
authorAlexander Tkachev2016-08-05 14:40:53 +0600
committerAlexander Tkachev2016-08-05 14:40:53 +0600
commit8fcc919b565bb944a3ff87540715fefc8761cf89 (patch)
treec116896a0f0371b2add185d894a443d9f161a1da /engines/wage/gui.cpp
parentb60c5d927e6d4a86660937f8426cf557e7e90f7e (diff)
downloadscummvm-rg350-8fcc919b565bb944a3ff87540715fefc8761cf89.tar.gz
scummvm-rg350-8fcc919b565bb944a3ff87540715fefc8761cf89.tar.bz2
scummvm-rg350-8fcc919b565bb944a3ff87540715fefc8761cf89.zip
WAGE: Fix cursor
It's now being clipped within window borders.
Diffstat (limited to 'engines/wage/gui.cpp')
-rw-r--r--engines/wage/gui.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/engines/wage/gui.cpp b/engines/wage/gui.cpp
index 86c2a9bfad..212e75be48 100644
--- a/engines/wage/gui.cpp
+++ b/engines/wage/gui.cpp
@@ -96,16 +96,22 @@ static void cursorTimerHandler(void *refCon) {
x += gui->_consoleWindow->getInnerDimensions().left;
y += gui->_consoleWindow->getInnerDimensions().top;
+ int h = kCursorHeight;
- gui->_screen.vLine(x, y, y + kCursorHeight, gui->_cursorState ? kColorBlack : kColorWhite);
+ if (y + h > gui->_consoleWindow->getInnerDimensions().bottom) {
+ h = gui->_consoleWindow->getInnerDimensions().bottom - y;
+ }
+
+ if (h > 0)
+ gui->_screen.vLine(x, y, y + h, gui->_cursorState ? kColorBlack : kColorWhite);
if (!gui->_cursorOff)
gui->_cursorState = !gui->_cursorState;
gui->_cursorRect.left = x;
gui->_cursorRect.right = MIN<uint16>(x + 1, gui->_screen.w);
- gui->_cursorRect.top = y;
- gui->_cursorRect.bottom = MIN<uint16>(y + kCursorHeight, gui->_screen.h);
+ gui->_cursorRect.top = MIN<uint16>(y - 1, gui->_consoleWindow->getInnerDimensions().top);
+ gui->_cursorRect.bottom = MIN<uint16>(MIN<uint16>(y + h, gui->_screen.h), gui->_consoleWindow->getInnerDimensions().bottom);
gui->_cursorDirty = true;
}