diff options
author | Martin Kiewitz | 2009-11-30 19:34:45 +0000 |
---|---|---|
committer | Martin Kiewitz | 2009-11-30 19:34:45 +0000 |
commit | df422c0894e7d7cfc0520ae91b1a1acfb582d3a1 (patch) | |
tree | 429a72981bb379a643781e7800940af8351cdc7c /engines/sci/gui | |
parent | e557075e9059278e7d7dc8354c2d32e12e333463 (diff) | |
download | scummvm-rg350-df422c0894e7d7cfc0520ae91b1a1acfb582d3a1.tar.gz scummvm-rg350-df422c0894e7d7cfc0520ae91b1a1acfb582d3a1.tar.bz2 scummvm-rg350-df422c0894e7d7cfc0520ae91b1a1acfb582d3a1.zip |
SCI: Fix kSetCursor (Sci1.1) to behave like Sierra Sci (fixes cursor hiding/showing in kq6)
svn-id: r46224
Diffstat (limited to 'engines/sci/gui')
-rw-r--r-- | engines/sci/gui/gui.cpp | 7 | ||||
-rw-r--r-- | engines/sci/gui/gui_cursor.cpp | 8 | ||||
-rw-r--r-- | engines/sci/gui/gui_cursor.h | 3 |
3 files changed, 16 insertions, 2 deletions
diff --git a/engines/sci/gui/gui.cpp b/engines/sci/gui/gui.cpp index aa621496e9..2cc361f348 100644 --- a/engines/sci/gui/gui.cpp +++ b/engines/sci/gui/gui.cpp @@ -583,12 +583,15 @@ uint16 SciGui::onControl(byte screenMask, Common::Rect rect) { void SciGui::animateShowPic() { GuiPort *picPort = _windowMgr->_picWind; Common::Rect picRect = picPort->rect; + bool previousCursorState = _cursor->isVisible(); - _cursor->hide(); + if (previousCursorState) + _cursor->hide(); // Adjust picRect to become relative to screen picRect.translate(picPort->left, picPort->top); _transitions->doit(picRect); - _cursor->show(); + if (previousCursorState) + _cursor->show(); } void SciGui::animate(reg_t listReference, bool cycle, int argc, reg_t *argv) { diff --git a/engines/sci/gui/gui_cursor.cpp b/engines/sci/gui/gui_cursor.cpp index b6b25628b6..cf6256640f 100644 --- a/engines/sci/gui/gui_cursor.cpp +++ b/engines/sci/gui/gui_cursor.cpp @@ -43,6 +43,8 @@ SciGuiCursor::SciGuiCursor(ResourceManager *resMan, SciGuiPalette *palette, SciG // center mouse cursor setPosition(Common::Point(_screen->_displayWidth / 2, _screen->_displayHeight / 2)); setMoveZone(Common::Rect(0, 0, _screen->_displayWidth, _screen->_displayHeight)); + + _isVisible = true; } SciGuiCursor::~SciGuiCursor() { @@ -51,10 +53,16 @@ SciGuiCursor::~SciGuiCursor() { void SciGuiCursor::show() { CursorMan.showMouse(true); + _isVisible = true; } void SciGuiCursor::hide() { CursorMan.showMouse(false); + _isVisible = false; +} + +bool SciGuiCursor::isVisible() { + return _isVisible; } void SciGuiCursor::purgeCache() { diff --git a/engines/sci/gui/gui_cursor.h b/engines/sci/gui/gui_cursor.h index 3cb9a3e537..293c508bdb 100644 --- a/engines/sci/gui/gui_cursor.h +++ b/engines/sci/gui/gui_cursor.h @@ -49,6 +49,7 @@ public: void show(); void hide(); + bool isVisible(); void setShape(GuiResourceId resourceId); void setView(GuiResourceId viewNum, int loopNum, int celNum, Common::Point *hotspot); void setPosition(Common::Point pos); @@ -74,6 +75,8 @@ private: Common::Rect _moveZone; // Rectangle in which the pointer can move CursorCache _cachedCursors; + + bool _isVisible; }; } // End of namespace Sci |