From fb49f91b00a2fe3a9e1a71cce05c6b9527306341 Mon Sep 17 00:00:00 2001 From: Samuel Mannehed Date: Sun, 19 Feb 2017 01:52:47 +0100 Subject: [PATCH] Allow local cursor to be changed while connected --- app/ui.js | 9 +++++++-- core/rfb.js | 6 ++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/app/ui.js b/app/ui.js index 8be07b2c..db1bfc9e 100644 --- a/app/ui.js +++ b/app/ui.js @@ -417,6 +417,7 @@ var UI; UI.addSettingChangeHandler('encrypt'); UI.addSettingChangeHandler('true_color'); UI.addSettingChangeHandler('cursor'); + UI.addSettingChangeHandler('cursor', UI.updateLocalCursor); UI.addSettingChangeHandler('resize'); UI.addSettingChangeHandler('resize', UI.enableDisableViewClip); UI.addSettingChangeHandler('resize', UI.applyResizeMode); @@ -499,7 +500,7 @@ var UI; document.getElementById('noVNC_setting_encrypt').disabled = UI.connected; document.getElementById('noVNC_setting_true_color').disabled = UI.connected; if (Util.browserSupportsCursorURIs()) { - document.getElementById('noVNC_setting_cursor').disabled = UI.connected; + document.getElementById('noVNC_setting_cursor').disabled = false; } else { UI.updateSetting('cursor', !Util.isTouchDevice); document.getElementById('noVNC_setting_cursor').disabled = true; @@ -1061,10 +1062,10 @@ var UI; UI.rfb.set_encrypt(UI.getSetting('encrypt')); UI.rfb.set_true_color(UI.getSetting('true_color')); - UI.rfb.set_local_cursor(UI.getSetting('cursor')); UI.rfb.set_shared(UI.getSetting('shared')); UI.rfb.set_repeaterID(UI.getSetting('repeaterID')); + UI.updateLocalCursor(); UI.updateViewOnly(); UI.rfb.connect(host, port, password, path); @@ -1654,6 +1655,10 @@ var UI; } }, + updateLocalCursor: function() { + UI.rfb.set_local_cursor(UI.getSetting('cursor')); + }, + updateViewOnly: function() { UI.rfb.set_view_only(UI.getSetting('view_only')); }, diff --git a/core/rfb.js b/core/rfb.js index 2de974b7..d094db91 100644 --- a/core/rfb.js +++ b/core/rfb.js @@ -1488,6 +1488,12 @@ this._display.disableLocalCursor(); } } + + // Need to send an updated list of encodings if we are connected + if (this._rfb_connection_state === "connected") { + RFB.messages.clientEncodings(this._sock, this._encodings, cursor, + this._true_color); + } }; RFB.prototype.set_view_only = function (view_only) {