diff options
author | Alexander Tkachev | 2016-08-05 14:40:53 +0600 |
---|---|---|
committer | Alexander Tkachev | 2016-08-05 14:40:53 +0600 |
commit | 8fcc919b565bb944a3ff87540715fefc8761cf89 (patch) | |
tree | c116896a0f0371b2add185d894a443d9f161a1da | |
parent | b60c5d927e6d4a86660937f8426cf557e7e90f7e (diff) | |
download | scummvm-rg350-8fcc919b565bb944a3ff87540715fefc8761cf89.tar.gz scummvm-rg350-8fcc919b565bb944a3ff87540715fefc8761cf89.tar.bz2 scummvm-rg350-8fcc919b565bb944a3ff87540715fefc8761cf89.zip |
WAGE: Fix cursor
It's now being clipped within window borders.
-rw-r--r-- | engines/wage/gui.cpp | 12 |
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; } |