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 }