Block tab drags across cmux app instances
This commit is contained in:
parent
d8022db404
commit
2c2190b231
2 changed files with 25 additions and 3 deletions
|
|
@ -7194,6 +7194,7 @@ private enum SidebarTabDragPayload {
|
|||
|
||||
private enum BonsplitTabDragPayload {
|
||||
static let typeIdentifier = "com.splittabbar.tabtransfer"
|
||||
private static let currentProcessId = Int32(ProcessInfo.processInfo.processIdentifier)
|
||||
|
||||
struct Transfer: Decodable {
|
||||
struct TabInfo: Decodable {
|
||||
|
|
@ -7202,6 +7203,25 @@ private enum BonsplitTabDragPayload {
|
|||
|
||||
let tab: TabInfo
|
||||
let sourcePaneId: UUID
|
||||
let sourceProcessId: Int32
|
||||
|
||||
private enum CodingKeys: String, CodingKey {
|
||||
case tab
|
||||
case sourcePaneId
|
||||
case sourceProcessId
|
||||
}
|
||||
|
||||
init(from decoder: Decoder) throws {
|
||||
let container = try decoder.container(keyedBy: CodingKeys.self)
|
||||
self.tab = try container.decode(TabInfo.self, forKey: .tab)
|
||||
self.sourcePaneId = try container.decode(UUID.self, forKey: .sourcePaneId)
|
||||
// Legacy payloads won't include this field. Treat as foreign process.
|
||||
self.sourceProcessId = try container.decodeIfPresent(Int32.self, forKey: .sourceProcessId) ?? -1
|
||||
}
|
||||
}
|
||||
|
||||
private static func isCurrentProcessTransfer(_ transfer: Transfer) -> Bool {
|
||||
transfer.sourceProcessId == currentProcessId
|
||||
}
|
||||
|
||||
static func currentTransfer() -> Transfer? {
|
||||
|
|
@ -7209,13 +7229,15 @@ private enum BonsplitTabDragPayload {
|
|||
let type = NSPasteboard.PasteboardType(typeIdentifier)
|
||||
|
||||
if let data = pasteboard.data(forType: type),
|
||||
let transfer = try? JSONDecoder().decode(Transfer.self, from: data) {
|
||||
let transfer = try? JSONDecoder().decode(Transfer.self, from: data),
|
||||
isCurrentProcessTransfer(transfer) {
|
||||
return transfer
|
||||
}
|
||||
|
||||
if let raw = pasteboard.string(forType: type),
|
||||
let data = raw.data(using: .utf8),
|
||||
let transfer = try? JSONDecoder().decode(Transfer.self, from: data) {
|
||||
let transfer = try? JSONDecoder().decode(Transfer.self, from: data),
|
||||
isCurrentProcessTransfer(transfer) {
|
||||
return transfer
|
||||
}
|
||||
|
||||
|
|
|
|||
2
vendor/bonsplit
vendored
2
vendor/bonsplit
vendored
|
|
@ -1 +1 @@
|
|||
Subproject commit 1ec5120d94126f5c78e20618d426ee4ef5593c70
|
||||
Subproject commit f24ba9222651ecc170869662eec9a5880404a82c
|
||||
Loading…
Add table
Add a link
Reference in a new issue