Fix wxWebKitCtrl::RunScript() return value.

Replace comparisons of the type name of the returned value with isKindOfClass:
checks which are more reliable.

Closes #14358.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71631 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2012-06-01 15:25:25 +00:00
parent 2253f18176
commit 3e1db65507

View File

@@ -682,18 +682,20 @@ wxString wxWebKitCtrl::RunScript(const wxString& javascript){
id result = [[m_webView windowScriptObject] evaluateWebScript:(NSString*)wxNSStringWithWxString( javascript )];
NSString* resultAsString;
NSString* className = NSStringFromClass([result class]);
if ([className isEqualToString:@"NSCFNumber"])
resultAsString = [NSString stringWithFormat:@"%@", result];
else if ([className isEqualToString:@"NSCFString"])
resultAsString = result;
else if ([className isEqualToString:@"NSCFBoolean"]){
if ([result boolValue])
resultAsString = @"true";
if ([result isKindOfClass:[NSNumber class]]){
// __NSCFBoolean is a subclass of NSNumber
if (strcmp([result objCType], @encode(BOOL)) == 0){
if ([result boolValue])
resultAsString = @"true";
else
resultAsString = @"false";
}
else
resultAsString = @"false";
resultAsString = [NSString stringWithFormat:@"%@", result];
}
else if ([className isEqualToString:@"WebScriptObject"])
else if ([result isKindOfClass:[NSString class]])
resultAsString = result;
else if ([result isKindOfClass:[WebScriptObject class]])
resultAsString = [result stringRepresentation];
else
return wxString(); // This can happen, see e.g. #12361.