aboutsummaryrefslogtreecommitdiff
path: root/gui
diff options
context:
space:
mode:
authorMax Horn2004-03-17 00:18:07 +0000
committerMax Horn2004-03-17 00:18:07 +0000
commit93ef5161a52f8a0dc6f36439c6441f97c4187cd8 (patch)
tree29f8091729e6872ab922b6ae0da50c5b2cb984f0 /gui
parent4a15a80eb3fad960e391d7de04edfae16a03f2ea (diff)
downloadscummvm-rg350-93ef5161a52f8a0dc6f36439c6441f97c4187cd8.tar.gz
scummvm-rg350-93ef5161a52f8a0dc6f36439c6441f97c4187cd8.tar.bz2
scummvm-rg350-93ef5161a52f8a0dc6f36439c6441f97c4187cd8.zip
Fix (workaround?) for bugs #917700 and #917697
svn-id: r13323
Diffstat (limited to 'gui')
-rw-r--r--gui/browser.cpp46
1 files changed, 10 insertions, 36 deletions
diff --git a/gui/browser.cpp b/gui/browser.cpp
index c713baa312..644e41aa90 100644
--- a/gui/browser.cpp
+++ b/gui/browser.cpp
@@ -43,41 +43,6 @@ BrowserDialog::~BrowserDialog() {
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 @@ int BrowserDialog::runModal() {
delete _choice;
_choice = 0;
+
+ // If in fullscreen mode, switch to windowed mode
+ bool wasFullscreen = g_system->getFeatureState(OSystem::kFeatureFullscreenMode);
+ if (wasFullscreen)
+ g_system->setFeatureState(OSystem::kFeatureFullscreenMode, false);
// Temporarily show the real mouse
ShowCursor();
@@ -98,7 +68,7 @@ int BrowserDialog::runModal() {
// 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 @@ int BrowserDialog::runModal() {
NavDialogDispose(dialogRef);
+ // If we were in fullscreen mode, switch back
+ if (wasFullscreen)
+ g_system->setFeatureState(OSystem::kFeatureFullscreenMode, true);
+
return (_choice != 0);
}