fix(clipboard): macOS 26+ 用 osascript 绕开 Qt clipboard native crash
补 _safe_get_clipboard_image 老代码的 macOS 分支:
- macOS 上 mimeData.imageData() / clipboard.image() / application/x-qt-image
反序列化会触发 NSPasteboard→NSImage 转换,部分场景下直接 native crash,
Python 层捕获不到(只看到应用闪退)
- 解决:macOS 上跳过这些路径,改用 osascript 让系统把剪贴板 PNG 数据
写到 temp 文件,再 QImage(path) 读盘 — 完全绕开 Qt clipboard API
ImageGenBridge._extract_clipboard_image 改造:
- 路径 B raw bytes:macOS 上 mime 候选不含 application/x-qt-image
- macOS 上路径 B 拿不到 → 直接 osascript(不再走 C1/C2)
- 非 macOS 不变:B raw → C1 imageData → C2 clipboard.image
新增 _extract_via_osascript:
- AppleScript 「set imgData to the clipboard as «class PNGf»」
- subprocess.run(['osascript', '-e', script], timeout=5)
- 写到 {tempdir}/nano_banana_app/_clipboard_tmp.png 再 QImage 读盘
- 无图 / 超时 / osascript 不存在等失败场景都返回 None 不抛
Windows / Linux 行为完全不变(is_mac=False 走原 3 层 fallback)。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Showing
1 changed file
with
131 additions
and
46 deletions
-
Please register or sign in to post a comment