Etresoft;
Try recompiling that old app using Xcode 12 on macOS 10.15 and run again.
Using an old binary doesn't get to the issue.
Post
Replies
Boosts
Views
Activity
TyngJJ
ClipboardViewer does not provide an option for viewing the NSPasteboard that is presented to a Service using the above entry point... So it is not helpful in this circumstance.
With further research what I currently see is this:
On macOS a user can make a text selection in a given application and then use 1 of four 'direct' means of invoking a second application to act on that text selection. (I use 'direct' here to mean that the selection is not saved to the file system in some fashion and then this file is acted on by the second application)
The 4 mechanisms are:
drag the text to a window managed by the second application
drag the text to the dock icon of the second application
invoke a 'Service' by using one of the various menus which are available for 'Services' (the service is provided by second application)
invoke a keyboard shortcut associated with the second application
It used to be that these means would all yield the same RTFData.
This is no longer true.
The 2 drag mechanisms still yield the expected RTFData
The 'Service' and keyboard shortcut do NOT yield an RTFData (they do yield an NSPasteboardTypeString product)
Please note that the keyboard shortcut is a user interface convenience which in fact utilizes the 'Service'...
The upshot here is that what has changed is the 'pboard' in the standard service entry point:
(void) xyzService:(NSPasteboard *)pboard userData:(NSString *)userData error:(NSString **)error; {
This NSPasteboard no longer behaves as it did in the past!
Can someone please point me to where this change in functionality is documented!
Thanks!
Apologies for the formatting above.... Didn't see this until just now...
In any case should be:
// this is a standard service entry point (void) xyzService:(NSPasteboard *)pboard userData:(NSString *)userData error:(NSString **)error; {
...
NSData *rtfData=[pboard dataForType:NSPasteboardTypeRTF];
if (rtfData!=nil) {
...
}
...
}
At 7:20 pm PDT 9/3/2020 I tried the receipt validation in main.m as was originally in place.
Worked as designed!
Methinks something was changed on the backend...
Thank-You to everybody involved.
Per DTS request above I have filed: FB8620384 at ~3pm PDT 9/3/2020
Folks;
Some further data because I just know you were all waiting on the edge of your seats!
So I defer the receipt validation which normally occured during main.m.
When a SKReceiptRefreshRequest is issued it errors out with a strange error:
Error Domain=SKErrorDomain Code=0 "(null)" UserInfo={NSUnderlyingError=0x600000d2a250 {Error Domain=com.apple.commerce.client Code=500 "(null)"
It 'feels' like something has changed recently in Catalina... This all used to work!
I'm stuck here - I have a bug fix to get into the App Store but the only way I can see to do that is to remove all the receipt handling because it no longer works. This stinks!
Can someone please point me to some useful information? Please!
Steve
For those following along at home:
I have now tried changing the build number in addition to the bundleID - same result.
I now feel blocked!
I need to get past this.
What the heck is going on?
Feedback from other sources has illuminated the following strategy:
-Split the database into two databases: ReadOnly and UserModifiable
Use the ReadOnly directly from within the mainBundle.
UserModifiable is copied to .applicationSupport and then used from there.
Duplication is then reduced to the initial database for userModifiable...(in my case this is relatively small!)
This strategy also addresses concern with backup (contents of .applicationSupport)
Helpful and to the point!
Thanks for taking the time to respond
It has subsided....Occam's explanation: a glitch in the matrix
hardened runtime!I had enabled and set the 'Contacts' option in Xcode but there is also an 'Apple Events' option.Turning on 'AppleEvents' restored the earlier functionality.
A dramatic improvement:tell application "Contacts"
set thisList to selection
return id of first item of thisList
end tell
Hey Just found the answer!!The hardened runtime requires an additional entitlement: com.apple.security.automation.apple-eventsSanity restored!
If anyone is still following along...Thanks go to janabanan for staying with this thread!!Here's simplified code which produces a .pdf file which retains the links embedded in the NSAttributedString which is displayed in 'sourceTextView'. This .pdf file is also appropriately paginated.[savePanel beginSheetModalForWindow:self.windowController.window completionHandler:^(NSInteger result){ if (result == NSFileHandlingPanelOKButton) { NSPrintInfo *printInfo = [NSPrintInfo sharedPrintInfo]; [printInfo setHorizontalPagination:NSFitPagination]; [printInfo setVerticallyCentered:NO]; [printInfo setHorizontallyCentered:NO]; [printInfo setLeftMargin:67.0]; [printInfo setRightMargin:67.0]; [printInfo setTopMargin:72.0]; [printInfo setBottomMargin:72.0]; [printInfo dictionary] [NSPrintJobDisposition] = NSPrintSaveJob; [printInfo dictionary] [NSPrintJobSavingURL] = [savePanel URL]; NSPrintOperation *op = [NSPrintOperation printOperationWithView:self.windowController.sourceSourceTextView printInfo:printInfo]; [op setShowsPrintPanel:NO]; [op setShowsProgressPanel:NO]; [op runOperation]; } [savePanel orderOut:self];}];
janabananaSo the ONLY difference here is I am NOT using NSDocument.Why would that make any difference?