From 0298305e809bb77b1121ec3cd0096f239c0ca427 Mon Sep 17 00:00:00 2001 From: Samuel Mannehed Date: Sat, 18 Feb 2017 16:30:35 +0100 Subject: [PATCH 1/5] Allow clipping to be changed while connected --- app/ui.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/ui.js b/app/ui.js index ad80c63b..2dd45363 100644 --- a/app/ui.js +++ b/app/ui.js @@ -421,6 +421,7 @@ var UI; UI.addSettingChangeHandler('resize', UI.enableDisableViewClip); UI.addSettingChangeHandler('resize', UI.applyResizeMode); UI.addSettingChangeHandler('clip'); + UI.addSettingChangeHandler('clip', UI.updateViewClip); UI.addSettingChangeHandler('shared'); UI.addSettingChangeHandler('view_only'); UI.addSettingChangeHandler('host'); @@ -1319,7 +1320,7 @@ var UI; document.getElementById('noVNC_setting_clip').disabled = true; } else { document.getElementById('noVNC_setting_clip').disabled = - UI.connected || Util.isTouchDevice; + Util.isTouchDevice; } }, From f78a652e862f3c5f582b2dffcd084711ca09e79c Mon Sep 17 00:00:00 2001 From: Samuel Mannehed Date: Sat, 18 Feb 2017 20:39:57 +0100 Subject: [PATCH 2/5] Don't send or recieve clipboard in view_only --- core/rfb.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/core/rfb.js b/core/rfb.js index e26e7b12..eb939712 100644 --- a/core/rfb.js +++ b/core/rfb.js @@ -343,7 +343,7 @@ }, clipboardPasteFrom: function (text) { - if (this._rfb_connection_state !== 'connected') { return; } + if (this._rfb_connection_state !== 'connected' || this._view_only) { return; } RFB.messages.clientCutText(this._sock, text); }, @@ -1189,6 +1189,8 @@ _handle_server_cut_text: function () { Util.Debug("ServerCutText"); + if (this._view_only) { return true; } + if (this._sock.rQwait("ServerCutText header", 7, 1)) { return false; } this._sock.rQskipBytes(3); // Padding var length = this._sock.rQshift32(); From ef1e8bab2298492cc08c9e0b8df74c14c278cd3c Mon Sep 17 00:00:00 2001 From: Samuel Mannehed Date: Sat, 18 Feb 2017 20:43:25 +0100 Subject: [PATCH 3/5] Allow view_only to be changed while connected --- app/ui.js | 9 +++++++-- core/rfb.js | 15 +++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/app/ui.js b/app/ui.js index 2dd45363..e2a2b3d1 100644 --- a/app/ui.js +++ b/app/ui.js @@ -424,6 +424,7 @@ var UI; UI.addSettingChangeHandler('clip', UI.updateViewClip); UI.addSettingChangeHandler('shared'); UI.addSettingChangeHandler('view_only'); + UI.addSettingChangeHandler('view_only', UI.updateViewOnly); UI.addSettingChangeHandler('host'); UI.addSettingChangeHandler('port'); UI.addSettingChangeHandler('path'); @@ -506,7 +507,6 @@ var UI; UI.enableDisableViewClip(); document.getElementById('noVNC_setting_shared').disabled = UI.connected; - document.getElementById('noVNC_setting_view_only').disabled = UI.connected; document.getElementById('noVNC_setting_host').disabled = UI.connected; document.getElementById('noVNC_setting_port').disabled = UI.connected; document.getElementById('noVNC_setting_path').disabled = UI.connected; @@ -1065,9 +1065,10 @@ var UI; 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_view_only(UI.getSetting('view_only')); UI.rfb.set_repeaterID(UI.getSetting('repeaterID')); + UI.updateViewOnly(); + UI.rfb.connect(host, port, password, path); }, @@ -1655,6 +1656,10 @@ var UI; } }, + updateViewOnly: function() { + UI.rfb.set_view_only(UI.getSetting('view_only')); + }, + updateLogging: function() { WebUtil.init_logging(UI.getSetting('logging')); }, diff --git a/core/rfb.js b/core/rfb.js index eb939712..2de974b7 100644 --- a/core/rfb.js +++ b/core/rfb.js @@ -1490,6 +1490,21 @@ } }; + RFB.prototype.set_view_only = function (view_only) { + this._view_only = view_only; + + if (this._rfb_connection_state === "connecting" || + this._rfb_connection_state === "connected") { + if (view_only) { + this._keyboard.ungrab(); + this._mouse.ungrab(); + } else { + this._keyboard.grab(); + this._mouse.grab(); + } + } + }; + RFB.prototype.get_display = function () { return this._display; }; RFB.prototype.get_keyboard = function () { return this._keyboard; }; RFB.prototype.get_mouse = function () { return this._mouse; }; From 3a535adab0b66410ae8fea49791d273f13a7f89f Mon Sep 17 00:00:00 2001 From: Samuel Mannehed Date: Sat, 18 Feb 2017 22:01:12 +0100 Subject: [PATCH 4/5] Allow auto reconnect to be changed while connected --- app/ui.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/ui.js b/app/ui.js index e2a2b3d1..8be07b2c 100644 --- a/app/ui.js +++ b/app/ui.js @@ -511,8 +511,6 @@ var UI; document.getElementById('noVNC_setting_port').disabled = UI.connected; document.getElementById('noVNC_setting_path').disabled = UI.connected; document.getElementById('noVNC_setting_repeaterID').disabled = UI.connected; - document.getElementById('noVNC_setting_reconnect').disabled = UI.connected; - document.getElementById('noVNC_setting_reconnect_delay').disabled = UI.connected; if (UI.connected) { UI.updateViewClip(); From fb49f91b00a2fe3a9e1a71cce05c6b9527306341 Mon Sep 17 00:00:00 2001 From: Samuel Mannehed Date: Sun, 19 Feb 2017 01:52:47 +0100 Subject: [PATCH 5/5] 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) {