From 675e6dd88085dae6cfd67562fb164542e784e31c Mon Sep 17 00:00:00 2001 From: Jaakko Keränen Date: Mon, 15 Mar 2021 14:33:03 +0200 Subject: macOS: Decoding handled URLs When an URL is provided via the system URL handling mechanism, decode any percent-encoded characters in it. --- src/macos.m | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src/macos.m') diff --git a/src/macos.m b/src/macos.m index 9d46d84b..c6c30fa5 100644 --- a/src/macos.m +++ b/src/macos.m @@ -330,7 +330,10 @@ void enableMomentumScroll_MacOS(void) { - (void)handleURLEvent:(NSAppleEventDescriptor*)event withReplyEvent:(NSAppleEventDescriptor*)replyEvent { NSString *url = [[event paramDescriptorForKeyword:keyDirectObject] stringValue]; - postCommandf_App("~open url:%s", [url cStringUsingEncoding:NSUTF8StringEncoding]); + iString *str = newCStr_String([url cStringUsingEncoding:NSUTF8StringEncoding]); + str = urlDecodeExclude_String(collect_String(str), "/#?:"); + postCommandf_App("~open url:%s", cstr_String(str)); + delete_String(str); } @end @@ -512,7 +515,7 @@ void handleCommand_MacOS(const char *cmd) { NSMenu *menu = mainMenuItem.submenu; if (menu) { int itemIndex = 0; - for (NSMenuItem *menuItem in menu.itemArray) { + for (NSMenuItem *menuItem in menu.itemArray) { NSString *command = [myDel commandForItem:menuItem]; if (!command && mainIndex == 6 && itemIndex == 0) { /* Window > Close */ -- cgit v1.2.3