aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Horn2002-05-12 19:25:44 +0000
committerMax Horn2002-05-12 19:25:44 +0000
commitcf5518ad6a6671774e41e74f1cf1c1b4a621d0c9 (patch)
tree34bcfe16b30e60a34e2873dc6c9726ba2a1de08e
parent4ac64b941d54e819135a9cb79305e2acd60c2ce1 (diff)
downloadscummvm-rg350-cf5518ad6a6671774e41e74f1cf1c1b4a621d0c9.tar.gz
scummvm-rg350-cf5518ad6a6671774e41e74f1cf1c1b4a621d0c9.tar.bz2
scummvm-rg350-cf5518ad6a6671774e41e74f1cf1c1b4a621d0c9.zip
restore old cursor after leaving save dialog (#548614)
svn-id: r4297
-rw-r--r--gui.cpp26
-rw-r--r--gui.h7
2 files changed, 25 insertions, 8 deletions
diff --git a/gui.cpp b/gui.cpp
index d2909d575e..d4b1f2badc 100644
--- a/gui.cpp
+++ b/gui.cpp
@@ -947,17 +947,19 @@ void Gui::init(Scumm *s)
void Gui::loop()
{
- /* FIXME - _active is a bool, so what was that code meant to do ? */
-#if OLD_WEIRD_CODE
- if (_active == 1) {
- _active++;
-#else
- if (_active) {
-#endif
+ if (_active && !_inited) {
+ _inited = true;
draw(0, 200); // was 100
_s->pauseSounds(true);
+ // Backup old cursor
+ memcpy(_old_grabbedCursor, _s->_grabbedCursor, sizeof(_old_grabbedCursor));
+ _old_cursorWidth = _s->_cursorWidth;
+ _old_cursorHeight = _s->_cursorHeight;
+ _old_cursorHotspotX = _s->_cursorHotspotX;
+ _old_cursorHotspotY = _s->_cursorHotspotY;
_old_cursor_mode = _s->_system->show_mouse(true);
+
_s->_cursorAnimate++;
_s->gdi._cursorActive = 1;
}
@@ -991,10 +993,20 @@ void Gui::close()
_s->_fullRedraw = true;
_s->_completeScreenRedraw = true;
_s->_cursorAnimate--;
+
+ // Restore old cursor
+ memcpy(_s->_grabbedCursor, _old_grabbedCursor, sizeof(_old_grabbedCursor));
+ _s->_cursorWidth = _old_cursorWidth;
+ _s->_cursorHeight = _old_cursorHeight;
+ _s->_cursorHotspotX = _old_cursorHotspotX;
+ _s->_cursorHotspotY = _old_cursorHotspotY;
+ _s->updateCursor();
+
_s->_system->show_mouse(_old_cursor_mode);
_s->pauseSounds(false);
_active = false;
+ _inited = false;
#ifdef _WIN32_WCE
diff --git a/gui.h b/gui.h
index df7d1d9dcc..3a76aa429f 100644
--- a/gui.h
+++ b/gui.h
@@ -52,14 +52,19 @@ protected:
int _return_to;
int _curX, _curY;
VirtScreen *_vs;
- bool _old_cursor_mode;
int _parentX, _parentY;
bool _active;
+ bool _inited;
byte _clickTimer;
byte _cur_page;
byte _dialog;
int _clickWidget;
char *_queryMess;
+
+ // mouse cursor state
+ bool _old_cursor_mode;
+ int _old_cursorHotspotX, _old_cursorHotspotY, _old_cursorWidth, _old_cursorHeight;
+ byte _old_grabbedCursor[2048];
// optiondialog specifics
int _gui_variables[100];