Revision: 14903 http://sourceforge.net/p/skim-app/code/14903 Author: hofman Date: 2025-01-31 16:20:55 +0000 (Fri, 31 Jan 2025) Log Message: ----------- Fix return type of functions. Fix range specifiers in dictionary values, e.g. in 'with properties' argument.
Modified Paths: -------------- trunk/NSScriptCommand_SKExtensions.m Modified: trunk/NSScriptCommand_SKExtensions.m =================================================================== --- trunk/NSScriptCommand_SKExtensions.m 2025-01-30 17:24:07 UTC (rev 14902) +++ trunk/NSScriptCommand_SKExtensions.m 2025-01-31 16:20:55 UTC (rev 14903) @@ -42,9 +42,9 @@ @implementation NSScriptCommand (SKExtensions) -static id (*original_setReceiversSpecifier)(id, SEL, id) = NULL; -static id (*original_setArguments)(id, SEL, id) = NULL; -static id (*original_setDirectParameter)(id, SEL, id) = NULL; +static void (*original_setReceiversSpecifier)(id, SEL, id) = NULL; +static void (*original_setArguments)(id, SEL, id) = NULL; +static void (*original_setDirectParameter)(id, SEL, id) = NULL; // Workaround for Cocoa Scripting and AppleScript bugs. // Cocoa Scripting does not accept range specifiers whose start/end specifier have an absolute container specifier, but AppleScript does not accept range specifiers with relative container specifiers, so we cannot return those from PDFSelection @@ -52,6 +52,9 @@ if ([object isKindOfClass:[NSArray class]]) { for (id subobject in (NSArray *)object) fixRangeSpecifiers(subobject); + } else if ([object isKindOfClass:[NSDictionary class]]) { + for (id subobject in [object allValues]) + fixRangeSpecifiers(subobject); } else if ([object isKindOfClass:[NSScriptObjectSpecifier class]]) { fixRangeSpecifiers([(NSScriptObjectSpecifier *)object containerSpecifier]); if ([object isKindOfClass:[NSRangeSpecifier class]]) { @@ -85,9 +88,9 @@ } + (void)load { - original_setReceiversSpecifier = (id (*)(id, SEL, id))SKReplaceInstanceMethodImplementationFromSelector(self, @selector(setReceiversSpecifier:), @selector(replacement_setReceiversSpecifier:)); - original_setArguments = (id (*)(id, SEL, id))SKReplaceInstanceMethodImplementationFromSelector(self, @selector(setArguments:), @selector(replacement_setArguments:)); - original_setDirectParameter = (id (*)(id, SEL, id))SKReplaceInstanceMethodImplementationFromSelector(self, @selector(setDirectParameter:), @selector(replacement_setDirectParameter:)); + original_setReceiversSpecifier = (void (*)(id, SEL, id))SKReplaceInstanceMethodImplementationFromSelector(self, @selector(setReceiversSpecifier:), @selector(replacement_setReceiversSpecifier:)); + original_setArguments = (void (*)(id, SEL, id))SKReplaceInstanceMethodImplementationFromSelector(self, @selector(setArguments:), @selector(replacement_setArguments:)); + original_setDirectParameter = (void (*)(id, SEL, id))SKReplaceInstanceMethodImplementationFromSelector(self, @selector(setDirectParameter:), @selector(replacement_setDirectParameter:)); } - (NSScriptObjectSpecifier *)subjectSpecifier { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. _______________________________________________ Skim-app-commit mailing list Skim-app-commit@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/skim-app-commit