Add a cross-import overlay with AppKit to allow attaching NSImage
s.
#869
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds on to the Core Graphics cross-import overlay added in #827 to allow attaching instances of
NSImage
to a test.NSImage
is a more complicated animal because it is notSendable
, but we don't want to make a (potentially very expensive) deep copy of its data until absolutely necessary. So we check inside the image to see if its contained representations are known to be safely copyable (i.e. copies made withNSCopying
do not share any mutable state with their originals.) If it looks safe to make a copy of the image by callingcopy()
, we do so; otherwise, we try to make a deep copy of the image.Due to how Swift implements polymorphism in protocol requirements, and because we don't really know what they're doing, subclasses of
NSImage
just get a call tocopy()
instead of deep introspection.UIImage
support will be implemented in a separate PR.Note
Attachments remain an experimental feature.
Checklist: