Skip to content

Add macOS native lazy file pasteboard write via NSPasteboardItemDataProvider#3930

Merged
guiyanakuang merged 1 commit intomainfrom
feat/issue-3929-native-lazy-file-pasteboard
Feb 23, 2026
Merged

Add macOS native lazy file pasteboard write via NSPasteboardItemDataProvider#3930
guiyanakuang merged 1 commit intomainfrom
feat/issue-3929-native-lazy-file-pasteboard

Conversation

@guiyanakuang
Copy link
Copy Markdown
Member

@guiyanakuang guiyanakuang commented Feb 23, 2026

Closes #3929

Summary

  • Add LazyFilePasteboardProvider implementing NSPasteboardItemDataProvider in Swift for deferred/lazy file data provision on macOS pasteboard
  • Add writeFilesToPasteboard(count, resolver) native function that accepts a Kotlin callback (index, buffer, bufferSize) -> length, keeping lazy resolution logic in Kotlin
  • Add JNA bindings (FileResolverCallback) and test instrumentation (getProvideDataCallCount / resetProvideDataCallCount)
  • Add MacosNativePasteboardTest with 7 tests covering: write validation, JVM clipboard readback, CrossPaste marker, and laziness proof (data provider not called during write, only on read)
  • Fix JBR AWT shutdown race crash (SIGSEGV in setBusy) when running tests in isolation via @BeforeAll/@AfterAll lifecycle hooks

Test plan

  • All 7 MacosNativePasteboardTest tests pass in isolation
  • All 7 tests pass in full test suite
  • No SIGSEGV crash on test process exit
  • ./gradlew ktlintCheck passes
  • ./gradlew build passes

@guiyanakuang guiyanakuang merged commit 818c708 into main Feb 23, 2026
2 checks passed
@guiyanakuang guiyanakuang deleted the feat/issue-3929-native-lazy-file-pasteboard branch February 23, 2026 06:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add macOS native lazy file pasteboard write via NSPasteboardItemDataProvider

1 participant