[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