Skip to content

Commit 140b6d2

Browse files
committed
We need a per type in flight tracker for OSC 52
Since a single request can now write to multiple destinations
1 parent 5754fa2 commit 140b6d2

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

kitty/clipboard.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,7 @@ def __init__(self, window_id: int) -> None:
322322
self.window_id = window_id
323323
self.currently_asking_permission_for: ReadRequest | None = None
324324
self.in_flight_write_request: WriteRequest | None = None
325+
self.osc52_in_flight_write_requests: dict[ClipboardType, WriteRequest] = {}
325326

326327
def parse_osc_5522(self, data: memoryview) -> None:
327328
import base64
@@ -406,13 +407,13 @@ def parse_osc_52(self, data: memoryview, is_partial: bool = False) -> None:
406407
self.handle_read_request(rr)
407408
else:
408409
for d in destinations:
409-
wr = self.in_flight_write_request
410+
wr = self.osc52_in_flight_write_requests.get(d)
410411
if wr is None:
411-
wr = self.in_flight_write_request = WriteRequest(d is ClipboardType.primary_selection)
412+
wr = self.osc52_in_flight_write_requests[d] = WriteRequest(d is ClipboardType.primary_selection)
412413
wr.add_base64_data(data)
413414
if is_partial:
414415
return
415-
self.in_flight_write_request = None
416+
self.osc52_in_flight_write_requests.pop(d, None)
416417
self.handle_write_request(wr)
417418

418419
def handle_write_request(self, wr: WriteRequest) -> None:
@@ -531,3 +532,4 @@ def handle_clipboard_confirmation(self, confirmed: bool) -> None:
531532
def close(self) -> None:
532533
if self.in_flight_write_request is not None:
533534
self.in_flight_write_request = None
535+
self.osc52_in_flight_write_requests.clear()

0 commit comments

Comments
 (0)