We need a per type in flight tracker for OSC 52

Since a single request can now write to multiple destinations
This commit is contained in:
Kovid Goyal 2025-03-18 08:13:35 +05:30
parent 5754fa2260
commit 140b6d2cdf
No known key found for this signature in database
GPG key ID: 06BC317B515ACE7C

View file

@ -322,6 +322,7 @@ def __init__(self, window_id: int) -> None:
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 @@ def parse_osc_52(self, data: memoryview, is_partial: bool = False) -> None:
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 @@ def handle_clipboard_confirmation(self, confirmed: bool) -> None:
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()