From 140b6d2cdfdc2482d04fb19ea4f348e828fc7818 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 18 Mar 2025 08:13:35 +0530 Subject: [PATCH] We need a per type in flight tracker for OSC 52 Since a single request can now write to multiple destinations --- kitty/clipboard.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/kitty/clipboard.py b/kitty/clipboard.py index 6401fb9af..651520b82 100644 --- a/kitty/clipboard.py +++ b/kitty/clipboard.py @@ -322,6 +322,7 @@ class ClipboardRequestManager: self.window_id = window_id self.currently_asking_permission_for: ReadRequest | None = None self.in_flight_write_request: WriteRequest | None = None + self.osc52_in_flight_write_requests: dict[ClipboardType, WriteRequest] = {} def parse_osc_5522(self, data: memoryview) -> None: import base64 @@ -406,13 +407,13 @@ class ClipboardRequestManager: self.handle_read_request(rr) else: for d in destinations: - wr = self.in_flight_write_request + wr = self.osc52_in_flight_write_requests.get(d) if wr is None: - wr = self.in_flight_write_request = WriteRequest(d is ClipboardType.primary_selection) + wr = self.osc52_in_flight_write_requests[d] = WriteRequest(d is ClipboardType.primary_selection) wr.add_base64_data(data) if is_partial: return - self.in_flight_write_request = None + self.osc52_in_flight_write_requests.pop(d, None) self.handle_write_request(wr) def handle_write_request(self, wr: WriteRequest) -> None: @@ -531,3 +532,4 @@ class ClipboardRequestManager: def close(self) -> None: if self.in_flight_write_request is not None: self.in_flight_write_request = None + self.osc52_in_flight_write_requests.clear()