fix clipboard write to client from secondary screen

This commit is contained in:
matt 2023-12-21 15:46:11 +00:00
parent d51c5e37b7
commit 82e0100a97
1 changed files with 34 additions and 21 deletions

View File

@ -1738,6 +1738,11 @@ export default class RFB extends EventTargetMixin {
this._mouseLastScreenIndex = event.data.mouseLastScreenIndex; this._mouseLastScreenIndex = event.data.mouseLastScreenIndex;
} }
break; break;
case 'receivedClipboard':
if (event.data.mouseLastScreenIndex === this._display.screenIndex) {
this._write_binary_clipboard(...event.data.args);
}
break;
case 'disconnect': case 'disconnect':
this.disconnect(); this.disconnect();
break; break;
@ -3216,6 +3221,18 @@ export default class RFB extends EventTargetMixin {
if (this.clipboardBinary) { if (this.clipboardBinary) {
this._clipHash = 0; this._clipHash = 0;
if (this._mouseLastScreenIndex === 0) {
this._write_binary_clipboard(clipItemData, textdata)
} else {
this._proxyRFBMessage('receivedClipboard', [ clipItemData, textdata ]);
}
}
}
return true;
}
_write_binary_clipboard(clipItemData, textdata) {
navigator.clipboard.write([new ClipboardItem(clipItemData)]).then( navigator.clipboard.write([new ClipboardItem(clipItemData)]).then(
() => { () => {
if (textdata) { if (textdata) {
@ -3238,10 +3255,6 @@ export default class RFB extends EventTargetMixin {
} }
); );
} }
}
return true;
}
_handle_server_stats_msg() { _handle_server_stats_msg() {
this._sock.rQskipBytes(3); // Padding this._sock.rQskipBytes(3); // Padding