From d2c155aad7b482e66b5cb457ef3d2ff99fec83dc Mon Sep 17 00:00:00 2001 From: "suixinyuan.sxy" Date: Thu, 14 Oct 2021 21:21:24 +0800 Subject: [PATCH] remove extra character when copy/paste --- .../projector/client/web/state/ClientState.kt | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/projector-client-web/src/main/kotlin/org/jetbrains/projector/client/web/state/ClientState.kt b/projector-client-web/src/main/kotlin/org/jetbrains/projector/client/web/state/ClientState.kt index cd4c3646f..6d2aedee5 100644 --- a/projector-client-web/src/main/kotlin/org/jetbrains/projector/client/web/state/ClientState.kt +++ b/projector-client-web/src/main/kotlin/org/jetbrains/projector/client/web/state/ClientState.kt @@ -506,8 +506,10 @@ sealed class ClientState { typing.addEventChar(event) } - eventsToSend.add(event) - messagingPolicy.onAddEvent() + if (!isCopyOrPasteEvent(event)) { + eventsToSend.add(event) + messagingPolicy.onAddEvent() + } this } @@ -557,6 +559,17 @@ sealed class ClientState { else -> super.consume(action) } + private fun isCopyOrPasteEvent(event: ClientEvent): Boolean { + return (event is ClientKeyPressEvent + && (KeyModifier.CTRL_KEY in event.modifiers + || KeyModifier.META_KEY in event.modifiers + || event.char.category == CharCategory.CONTROL) + && (event.char.toString() == "v" + || event.char.toString() == "V" + || event.char.toString() == "C" + || event.char.toString() == "c")) + } + private fun reloadConnection(messageText: String): ClientState { logger.info { messageText }