[Scummvm-cvs-logs] SF.net SVN: scummvm: [24233] scummvm/trunk/gui

lordhoto at users.sourceforge.net lordhoto at users.sourceforge.net
Sun Oct 8 22:37:45 CEST 2006


Revision: 24233
          http://svn.sourceforge.net/scummvm/?rev=24233&view=rev
Author:   lordhoto
Date:     2006-10-08 13:37:39 -0700 (Sun, 08 Oct 2006)

Log Message:
-----------
Final fix for wrong cursor palettes in SCUMM games after using the GUI.

Modified Paths:
--------------
    scummvm/trunk/gui/newgui.cpp
    scummvm/trunk/gui/newgui.h

Modified: scummvm/trunk/gui/newgui.cpp
===================================================================
--- scummvm/trunk/gui/newgui.cpp	2006-10-08 20:19:23 UTC (rev 24232)
+++ scummvm/trunk/gui/newgui.cpp	2006-10-08 20:37:39 UTC (rev 24233)
@@ -86,6 +86,7 @@
 NewGui::NewGui() : _needRedraw(false),
 	_stateIsSaved(false), _cursorAnimateCounter(0), _cursorAnimateTimer(0) {
 	_theme = 0;
+	_useStdCursor = false;
 
 	_system = g_system;
 	_lastScreenChangeID = _system->getScreenChangeID();
@@ -126,6 +127,15 @@
 	Common::ConfigFile cfg;
 
 	Common::String oldTheme = (_theme != 0) ? _theme->getStylefileName() : "";
+
+	if (_theme)
+		_theme->disable();
+
+	if (_useStdCursor) {
+		PaletteMan.popCursorPalette();
+		CursorMan.popCursor();
+	}
+
 	delete _theme;
 
 	if (style.compareToIgnoreCase("classic (builtin)") == 0) {
@@ -205,13 +215,12 @@
 		saveState();
 		_theme->enable();
 		didSaveState = true;
+
+		_useStdCursor = !_theme->ownCursor();
+		if (_useStdCursor)
+			setupCursor();
 	}
 
-	bool useStandardCurs = !_theme->ownCursor();
-
-	if (useStandardCurs)
-		setupCursor();
-
 	while (!_dialogStack.empty() && activeDialog == _dialogStack.top()) {
 		if (_needRedraw) {
 			redraw();
@@ -223,7 +232,7 @@
 
 		activeDialog->handleTickle();
 
-		if (useStandardCurs)
+		if (_useStdCursor)
 			animateCursor();
 		_theme->drawAll();
 		_system->updateScreen();
@@ -240,12 +249,9 @@
 			// HACK to change the cursor to the new themes one
 			if (_themeChange) {
 				_theme->enable();
-				PaletteMan.popCursorPalette();
 
-				CursorMan.popCursor();
-
-				useStandardCurs = !_theme->ownCursor();
-				if (useStandardCurs)
+				_useStdCursor = !_theme->ownCursor();
+				if (_useStdCursor)
 					setupCursor();
 
 				_theme->refresh();
@@ -325,12 +331,11 @@
 	}
 
 	_theme->closeDialog();
-	if (useStandardCurs)
-		PaletteMan.popCursorPalette();
 
 	if (didSaveState) {
 		_theme->disable();
 		restoreState();
+		_useStdCursor = false;
 	}
 }
 
@@ -347,7 +352,10 @@
 }
 
 void NewGui::restoreState() {
-	CursorMan.popCursor();
+	if (_useStdCursor) {
+		CursorMan.popCursor();
+		PaletteMan.popCursorPalette();
+	}
 
 	_system->updateScreen();
 

Modified: scummvm/trunk/gui/newgui.h
===================================================================
--- scummvm/trunk/gui/newgui.h	2006-10-08 20:19:23 UTC (rev 24232)
+++ scummvm/trunk/gui/newgui.h	2006-10-08 20:37:39 UTC (rev 24233)
@@ -94,6 +94,8 @@
 
 	bool		_stateIsSaved;
 
+	bool		_useStdCursor;
+
 	// for continuous events (keyDown)
 	struct {
 		uint16 ascii;


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list