@@ -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