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:
parent
5754fa2260
commit
140b6d2cdf
1 changed files with 5 additions and 3 deletions
|
|
@ -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()
|
||||
|
|
|
|||
Loading…
Reference in a new issue