X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ae4adc3d0644b50636f0c3f6f06590b8a08cd6c8..cc4d5638c66a409e421420ed7110917755a66788:/src/osx/webview_webkit.mm?ds=inline diff --git a/src/osx/webview_webkit.mm b/src/osx/webview_webkit.mm index 9659efdb08..a311bb3d34 100644 --- a/src/osx/webview_webkit.mm +++ b/src/osx/webview_webkit.mm @@ -5,7 +5,6 @@ // Author: Jethro Grassie / Kevin Ollivier / Marianne Gagnon // Modified by: // Created: 2004-4-16 -// RCS-ID: $Id$ // Copyright: (c) Jethro Grassie / Kevin Ollivier / Marianne Gagnon // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -645,10 +644,11 @@ void wxWebViewWebKit::SetScrollPos(int pos) wxString wxWebViewWebKit::GetSelectedText() const { - NSString* selection = [[m_webView selectedDOMRange] markupString]; - if (!selection) return wxEmptyString; + DOMRange* dr = [m_webView selectedDOMRange]; + if ( !dr ) + return wxString(); - return wxStringWithNSString(selection); + return wxStringWithNSString([dr toString]); } void wxWebViewWebKit::RunScript(const wxString& javascript) @@ -905,13 +905,11 @@ void wxWebViewWebKit::SelectAll() wxString wxWebViewWebKit::GetSelectedSource() const { - wxString script = ("var range = window.getSelection().getRangeAt(0);" - "var element = document.createElement('div');" - "element.appendChild(range.cloneContents());" - "return element.innerHTML;"); - NSString *result = [m_webView stringByEvaluatingJavaScriptFromString: - wxNSStringWithWxString(script)]; - return wxStringWithNSString(result); + DOMRange* dr = [m_webView selectedDOMRange]; + if ( !dr ) + return wxString(); + + return wxStringWithNSString([dr markupString]); } wxString wxWebViewWebKit::GetPageText() const @@ -1291,9 +1289,23 @@ wxString nsErrorToWxHtmlError(NSError* error, wxWebViewNavigationError* out) NSURLRequest *request = [self request]; NSString* path = [[request URL] absoluteString]; + id<NSURLProtocolClient> client = [self client]; + wxString wxpath = wxStringWithNSString(path); wxString scheme = wxStringWithNSString([[request URL] scheme]); wxFSFile* file = g_stringHandlerMap[scheme]->GetFile(wxpath); + + if (!file) + { + NSError *error = [[NSError alloc] initWithDomain:NSURLErrorDomain + code:NSURLErrorFileDoesNotExist + userInfo:nil]; + + [client URLProtocol:self didFailWithError:error]; + + return; + } + size_t length = file->GetStream()->GetLength(); @@ -1307,8 +1319,6 @@ wxString nsErrorToWxHtmlError(NSError* error, wxWebViewNavigationError* out) file->GetStream()->Read(buffer, length); NSData *data = [[NSData alloc] initWithBytesNoCopy:buffer length:length]; - id<NSURLProtocolClient> client = [self client]; - //We do not support caching anything yet [client URLProtocol:self didReceiveResponse:response cacheStoragePolicy:NSURLCacheStorageNotAllowed];