summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
authorGraham Madarasz (Graham Linden) <graham@lindenlab.com>2013-09-26 18:53:12 -0700
committerGraham Madarasz (Graham Linden) <graham@lindenlab.com>2013-09-26 18:53:12 -0700
commitc775ae7cbd92099ee7a71c219a1b4b9ff7e7d82f (patch)
tree9b3a0c1ef78b65405fb97c13c25629b383852efc /indra/newview
parentb8a1fd33f5e5d438eaa708ff4687215d9f1a79c8 (diff)
MAINT-3155 add cocoa equiv for former AppleEventManager shenanigans for SLURL handling
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/llappdelegate-objc.mm13
-rwxr-xr-xindra/newview/llappviewermacosx.cpp53
2 files changed, 31 insertions, 35 deletions
diff --git a/indra/newview/llappdelegate-objc.mm b/indra/newview/llappdelegate-objc.mm
index 30476b3d22..91251ed7c0 100644
--- a/indra/newview/llappdelegate-objc.mm
+++ b/indra/newview/llappdelegate-objc.mm
@@ -54,6 +54,19 @@
}
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(languageUpdated) name:@"NSTextInputContextKeyboardSelectionDidChangeNotification" object:nil];
+
+ [[NSAppleEventManager sharedAppleEventManager] setEventHandler:self andSelector:@selector(handleGetURLEvent:withReplyEvent:) forEventClass:kInternetEventClass andEventID:kAEGetURL];
+}
+
+- (void) handleGetURLEvent:(NSAppleEventDescriptor *)event withReplyEvent:(NSAppleEventDescriptor *)replyEvent {
+ NSString *url= nil;
+ url = [[[[NSAppleEventManager sharedAppleEventManager]// 1
+ currentAppleEvent]// 2
+ paramDescriptorForKeyword:keyDirectObject]// 3
+ stringValue];// 4
+
+ const char* url_utf8 = [url UTF8String];
+ handleUrl(url_utf8);
}
- (void) applicationDidBecomeActive:(NSNotification *)notification
diff --git a/indra/newview/llappviewermacosx.cpp b/indra/newview/llappviewermacosx.cpp
index 316c90d9d2..2723f0b90d 100755
--- a/indra/newview/llappviewermacosx.cpp
+++ b/indra/newview/llappviewermacosx.cpp
@@ -483,41 +483,24 @@ bool LLAppViewerMacOSX::getMasterSystemAudioMute()
return (mute != 0);
}
-OSErr AEGURLHandler(const AppleEvent *messagein, AppleEvent *reply, long refIn)
+void handleUrl(const char* url_utf8)
{
- OSErr result = noErr;
- DescType actualType;
- char buffer[1024]; // Flawfinder: ignore
- Size size;
-
- result = AEGetParamPtr (
- messagein,
- keyDirectObject,
- typeCString,
- &actualType,
- (Ptr)buffer,
- sizeof(buffer),
- &size);
-
- if(result == noErr)
- {
- std::string url = buffer;
+ if (url_utf8)
+ {
+ std::string url = url_utf8;
+ // Safari 3.2 silently mangles secondlife:///app/ URLs into
+ // secondlife:/app/ (only one leading slash).
+ // Fix them up to meet the URL specification. JC
+ const std::string prefix = "secondlife:/app/";
+ std::string test_prefix = url.substr(0, prefix.length());
+ LLStringUtil::toLower(test_prefix);
+ if (test_prefix == prefix)
+ {
+ url.replace(0, prefix.length(), "secondlife:///app/");
+ }
- // Safari 3.2 silently mangles secondlife:///app/ URLs into
- // secondlife:/app/ (only one leading slash).
- // Fix them up to meet the URL specification. JC
- const std::string prefix = "secondlife:/app/";
- std::string test_prefix = url.substr(0, prefix.length());
- LLStringUtil::toLower(test_prefix);
- if (test_prefix == prefix)
- {
- url.replace(0, prefix.length(), "secondlife:///app/");
- }
-
- LLMediaCtrl* web = NULL;
- const bool trusted_browser = false;
- LLURLDispatcher::dispatch(url, "", web, trusted_browser);
- }
-
- return(result);
+ LLMediaCtrl* web = NULL;
+ const bool trusted_browser = false;
+ LLURLDispatcher::dispatch(url, "", web, trusted_browser);
+ }
}