[Scummvm-cvs-logs] scummvm master -> 67493394b3d0a3d9595f284898ba586271a26d41

criezy criezy at scummvm.org
Sun Nov 18 02:31:29 CET 2012


This automated email contains information about 4 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
a49f55878a OSX: Improve native OS X browser dialog
5de0d081b7 OSX: Add missing include for NSURL
40941af7b9 OSX: Fix Sparkle compilation on older systems
67493394b3 OSX: Remove use of deprecated methods


Commit: a49f55878a152eb9bd206e874d54bdf8e9ec281d
    https://github.com/scummvm/scummvm/commit/a49f55878a152eb9bd206e874d54bdf8e9ec281d
Author: Max Horn (max at quendi.de)
Date: 2012-11-17T17:29:08-08:00

Commit Message:
OSX: Improve native OS X browser dialog

Signed-off-by: Thierry Crozat <criezy at scummvm.org>

Changed paths:
    backends/platform/sdl/macosx/appmenu_osx.mm
    gui/browser.h
    gui/browser_osx.mm



diff --git a/backends/platform/sdl/macosx/appmenu_osx.mm b/backends/platform/sdl/macosx/appmenu_osx.mm
index 97c7edb..0d2a2ab 100644
--- a/backends/platform/sdl/macosx/appmenu_osx.mm
+++ b/backends/platform/sdl/macosx/appmenu_osx.mm
@@ -35,9 +35,8 @@
 - (void)setAppleMenu:(NSMenu *)menu;
 @end
 
-NSString *constructNSStringFromCString(const char* rawCString, NSStringEncoding stringEncoding) {
-        NSData *nsData = [NSData dataWithBytes:rawCString length:strlen(rawCString)];
-        return [[NSString alloc] initWithData:nsData encoding:stringEncoding];
+NSString *constructNSStringFromCString(const char *rawCString, CFStringEncoding stringEncoding) {
+	return (NSString *)CFStringCreateWithCString(NULL, rawCString, stringEncoding);
 }
 
 void replaceApplicationMenuItems() {
@@ -59,11 +58,11 @@ void replaceApplicationMenuItems() {
 
 	// Get current encoding
 #ifdef USE_TRANSLATION
-	nsString = constructNSStringFromCString((TransMan.getCurrentCharset()).c_str(), NSASCIIStringEncoding);
-	NSStringEncoding stringEncoding = CFStringConvertEncodingToNSStringEncoding(CFStringConvertIANACharSetNameToEncoding((CFStringRef)nsString));
+	nsString = constructNSStringFromCString(TransMan.getCurrentCharset().c_str(), NSASCIIStringEncoding);
+	CFStringEncoding stringEncoding = CFStringConvertIANACharSetNameToEncoding((CFStringRef)nsString);
 	[nsString release];
 #else
-	NSStringEncoding stringEncoding = NSASCIIStringEncoding;
+	CFStringEncoding stringEncoding = kCFStringEncodingASCII;
 #endif
 
 	// Add "About ScummVM" menu item
diff --git a/gui/browser.h b/gui/browser.h
index e5cc12a..5cf091f 100644
--- a/gui/browser.h
+++ b/gui/browser.h
@@ -48,6 +48,7 @@ public:
 protected:
 #ifdef MACOSX
 	const void *_titleRef;
+	const void *_chooseRef;
 #else
 	ListWidget		*_fileList;
 	StaticTextWidget	*_currentPath;
diff --git a/gui/browser_osx.mm b/gui/browser_osx.mm
index b8aa7c5..1d5e6f2 100644
--- a/gui/browser_osx.mm
+++ b/gui/browser_osx.mm
@@ -28,6 +28,7 @@
 #include "common/config-manager.h"
 #include "common/system.h"
 #include "common/algorithm.h"
+#include "common/translation.h"
 
 #include <AppKit/NSOpenPanel.h>
 #include <Foundation/NSString.h>
@@ -36,12 +37,29 @@ namespace GUI {
 
 BrowserDialog::BrowserDialog(const char *title, bool dirBrowser)
 	: Dialog("Browser") {
-	_titleRef = CFStringCreateWithCString(0, title, CFStringGetSystemEncoding());
+
+	// remember whether this is a file browser or a directory browser.
 	_isDirBrowser = dirBrowser;
+
+	// Get current encoding
+#ifdef USE_TRANSLATION
+	CFStringRef encStr = CFStringCreateWithCString(NULL, TransMan.getCurrentCharset().c_str(), kCFStringEncodingASCII);
+	CFStringEncoding stringEncoding = CFStringConvertIANACharSetNameToEncoding(encStr);
+	CFRelease(encStr);
+#else
+	CFStringEncoding stringEncoding = kCFStringEncodingASCII;
+#endif
+
+	// Convert title to NSString
+	_titleRef = CFStringCreateWithCString(0, title, stringEncoding);
+
+	// Convert button text to NSString
+	_chooseRef = CFStringCreateWithCString(0, _("Choose"), stringEncoding);
 }
 
 BrowserDialog::~BrowserDialog() {
 	CFRelease(_titleRef);
+	CFRelease(_chooseRef);
 }
 
 int BrowserDialog::runModal() {
@@ -58,16 +76,20 @@ int BrowserDialog::runModal() {
 	// Temporarily show the real mouse
 	CGDisplayShowCursor(kCGDirectMainDisplay);
 
-
-	NSOpenPanel * panel = [NSOpenPanel openPanel];
-	[panel setCanChooseDirectories:YES];
-	if ([panel runModalForTypes:nil] == NSOKButton) {
-		const char *filename = [[panel filename] UTF8String];
-		_choice = Common::FSNode(filename);
-		choiceMade = true;
+	NSOpenPanel *panel = [NSOpenPanel openPanel];
+	[panel setCanChooseFiles:!_isDirBrowser];
+	[panel setCanChooseDirectories:_isDirBrowser];
+	[panel setTitle:(NSString *)_titleRef];
+	[panel setPrompt:(NSString *)_chooseRef];
+	if ([panel runModal] == NSOKButton) {
+		NSURL *url = [panel URL];
+		if ([url isFileURL]) {
+			const char *filename = [[url path] UTF8String];
+			_choice = Common::FSNode(filename);
+			choiceMade = true;
+		}
 	}
 
-
 	// If we were in fullscreen mode, switch back
 	if (wasFullscreen) {
 		g_system->beginGFXTransaction();


Commit: 5de0d081b7824dc1b398bc20d1b4d113ddc15af1
    https://github.com/scummvm/scummvm/commit/5de0d081b7824dc1b398bc20d1b4d113ddc15af1
Author: Thierry Crozat (criezy at scummvm.org)
Date: 2012-11-17T17:29:09-08:00

Commit Message:
OSX: Add missing include for NSURL

This fixes compilation on older systems (apparently on newer
systems it was already included indirectly).

Changed paths:
    gui/browser_osx.mm



diff --git a/gui/browser_osx.mm b/gui/browser_osx.mm
index 1d5e6f2..ecd6091 100644
--- a/gui/browser_osx.mm
+++ b/gui/browser_osx.mm
@@ -32,6 +32,7 @@
 
 #include <AppKit/NSOpenPanel.h>
 #include <Foundation/NSString.h>
+#include <Foundation/NSURL.h>
 
 namespace GUI {
 


Commit: 40941af7b9ffeeee0e328fc86e5749b9043c9113
    https://github.com/scummvm/scummvm/commit/40941af7b9ffeeee0e328fc86e5749b9043c9113
Author: Thierry Crozat (criezy at scummvm.org)
Date: 2012-11-17T17:29:09-08:00

Commit Message:
OSX: Fix Sparkle compilation on older systems

This patch was provided by fingolfin (see patch #3582260). It replaces
use of methods introduced in MacOS X 10.4 with methods that exists
since MacOS X 10.0.

Changed paths:
    backends/updates/macosx/macosx-updates.mm



diff --git a/backends/updates/macosx/macosx-updates.mm b/backends/updates/macosx/macosx-updates.mm
index 741e898..f3b221c 100644
--- a/backends/updates/macosx/macosx-updates.mm
+++ b/backends/updates/macosx/macosx-updates.mm
@@ -59,10 +59,14 @@ MacOSXUpdateManager::MacOSXUpdateManager() {
 	[sparkleUpdater setFeedURL:[NSURL URLWithString:feedbackURL]];
 
 	// Get current encoding
-	NSStringEncoding stringEncoding = CFStringConvertEncodingToNSStringEncoding(CFStringConvertIANACharSetNameToEncoding((CFStringRef)[NSString stringWithCString:(TransMan.getCurrentCharset()).c_str() encoding:NSASCIIStringEncoding]));
+	CFStringRef encStr = CFStringCreateWithCString(NULL, TransMan.getCurrentCharset().c_str(), kCFStringEncodingASCII);
+	CFStringEncoding stringEncoding = CFStringConvertIANACharSetNameToEncoding(encStr);
+	CFRelease(encStr);
 
 	// Add "Check for Updates..." menu item
-	NSMenuItem *updateMenuItem = [applicationMenu insertItemWithTitle:[NSString stringWithCString:_("Check for Updates...") encoding:stringEncoding] action:@selector(checkForUpdates:) keyEquivalent:@"" atIndex:1];
+	CFStringRef title = CFStringCreateWithCString(NULL, _("Check for Updates..."), stringEncoding);
+	NSMenuItem *updateMenuItem = [applicationMenu insertItemWithTitle:(NSString *)title action:@selector(checkForUpdates:) keyEquivalent:@"" atIndex:1];
+	CFRelease(title);
 
 	// Set the target of the new menu item
 	[updateMenuItem setTarget:sparkleUpdater];


Commit: 67493394b3d0a3d9595f284898ba586271a26d41
    https://github.com/scummvm/scummvm/commit/67493394b3d0a3d9595f284898ba586271a26d41
Author: Thierry Crozat (criezy at scummvm.org)
Date: 2012-11-17T17:29:09-08:00

Commit Message:
OSX: Remove use of deprecated methods

FSRef and FSPathMakeRef have been deprecated in OS X 10.8. So we
use CFURLRef instead.

Changed paths:
    backends/platform/sdl/macosx/macosx.cpp



diff --git a/backends/platform/sdl/macosx/macosx.cpp b/backends/platform/sdl/macosx/macosx.cpp
index fb76c11..85342d6 100644
--- a/backends/platform/sdl/macosx/macosx.cpp
+++ b/backends/platform/sdl/macosx/macosx.cpp
@@ -39,7 +39,6 @@
 
 #include "ApplicationServices/ApplicationServices.h"	// for LSOpenFSRef
 #include "CoreFoundation/CoreFoundation.h"	// for CF* stuff
-#include "CoreServices/CoreServices.h"	// for FSPathMakeRef
 
 OSystem_MacOSX::OSystem_MacOSX()
 	:
@@ -107,13 +106,9 @@ bool OSystem_MacOSX::displayLogFile() {
 	if (_logFilePath.empty())
 		return false;
 
-	FSRef ref;
-	OSStatus err;
-
-	err = FSPathMakeRef((const UInt8 *)_logFilePath.c_str(), &ref, NULL);
-	if (err == noErr) {
-		err = LSOpenFSRef(&ref, NULL);
-	}
+    CFURLRef url = CFURLCreateFromFileSystemRepresentation(kCFAllocatorDefault, (const UInt8 *)_logFilePath.c_str(), _logFilePath.size(), false);
+    OSStatus err = LSOpenCFURLRef(url, NULL);
+    CFRelease(url);
 
 	return err != noErr;
 }






More information about the Scummvm-git-logs mailing list