[Scummvm-cvs-logs] CVS: scummvm/gui browser.cpp,1.20,1.20.2.1

Max Horn fingolfin at users.sourceforge.net
Tue Mar 16 16:28:04 CET 2004


Update of /cvsroot/scummvm/scummvm/gui
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22022/gui

Modified Files:
      Tag: branch-0-6-0
	browser.cpp 
Log Message:
Fix (workaround?) for bugs #917700 and #917697

Index: browser.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gui/browser.cpp,v
retrieving revision 1.20
retrieving revision 1.20.2.1
diff -u -d -r1.20 -r1.20.2.1
--- browser.cpp	11 Feb 2004 13:31:16 -0000	1.20
+++ browser.cpp	17 Mar 2004 00:18:06 -0000	1.20.2.1
@@ -43,41 +43,6 @@
 	CFRelease(_titleRef);
 }
 
-static void myNavEventProc(NavEventCallbackMessage message, NavCBRecPtr callBackParms, void * callBackUD) {
-	switch (message) {
-	case kNavCBStart: {
-		// Force the window to be in the shielding window level -- this way 
-		// it's visible even in fullscreen mode.
-		// Some glitches remain:
-		// - Need to center the nav dialog over the game window
-		// - In fullscreen mode, the game window won't be redrawn while the nav
-		//   dialog is up, since our event loop won't run.
-		// - It will not work well if you try to use it in 320x200 fullscreen mode.
-		//   Not that I have found any machine which actually supports that :-).
-		WindowGroupRef group;
-		OSStatus err;
-		err = CreateWindowGroup(0, &group);
-		SetWindowGroupLevel(group, CGShieldingWindowLevel());
-		err = SetWindowGroup(callBackParms->window, group);
-		break; }
-	case kNavCBTerminate: {
-		WindowGroupRef group;
-		OSStatus err;
-		
-		group = GetWindowGroup(callBackParms->window);
-		err = ReleaseWindowGroup(group);
-		break; }
-	case kNavCBEvent: {
-		// TODO: here we could try to redraw the ScummVM window.
-		// This will probably require direct interfacing with the (SDL) backend
-		// and/or with Cocoa.
-		break; }
-	}
-	
-}
-
-static NavEventUPP myNavEventUPP = NewNavEventUPP((NavEventProcPtr)myNavEventProc);
-
 int BrowserDialog::runModal() {
 	NavDialogRef dialogRef;
 	WindowRef windowRef = 0;
@@ -88,6 +53,11 @@
 	
 	delete _choice;
 	_choice = 0;
+	
+	// If in fullscreen mode, switch to windowed mode
+	bool wasFullscreen = g_system->property(OSystem::PROP_GET_FULLSCREEN, 0);
+	if (wasFullscreen)
+		g_system->property(OSystem::PROP_TOGGLE_FULLSCREEN, 0);
 
 	// Temporarily show the real mouse
 	ShowCursor();
@@ -98,7 +68,7 @@
 //	options.message = CFSTR("Select your game directory");
 	options.modality = kWindowModalityAppModal;
 	
-	err = NavCreateChooseFolderDialog(&options, myNavEventUPP, 0, g_system, &dialogRef);
+	err = NavCreateChooseFolderDialog(&options, 0, 0, 0, &dialogRef);
 	assert(err == noErr);
 	
 	windowRef = NavDialogGetWindow(dialogRef);
@@ -136,6 +106,10 @@
 
 	NavDialogDispose(dialogRef);
 
+	// If we were in fullscreen mode, switch back
+	if (wasFullscreen)
+		g_system->property(OSystem::PROP_TOGGLE_FULLSCREEN, 0);
+
 	return (_choice != 0);
 }
 





More information about the Scummvm-git-logs mailing list