Add a setting to choose the scale mode of the noVNC pop-up as well as the
embedded console in the content panel to "My Settings". Having both set to
local scaling was the most important use-case for the users. One setting for
both places is the simplest solution making this possible.

Signed-off-by: Dominic Jäger <d.jae...@proxmox.com>
---
Adding an option to My Settings was proposed by Dietmar.

 www/manager6/Utils.js           |  3 +-
 www/manager6/VNCConsole.js      |  3 +-
 www/manager6/window/Settings.js | 50 ++++++++++++++++++++++++++++++++-
 3 files changed, 53 insertions(+), 3 deletions(-)

diff --git a/www/manager6/Utils.js b/www/manager6/Utils.js
index 6838ef2f..36732a37 100644
--- a/www/manager6/Utils.js
+++ b/www/manager6/Utils.js
@@ -960,13 +960,14 @@ Ext.define('PVE.Utils', { utilities: {
     },
 
     openVNCViewer: function(vmtype, vmid, nodename, vmname, cmd) {
+       var sp = Ext.state.Manager.getProvider();
        var url = Ext.Object.toQueryString({
            console: vmtype, // kvm, lxc, upgrade or shell
            novnc: 1,
            vmid: vmid,
            vmname: vmname,
            node: nodename,
-           resize: 'off',
+           resize: sp.get('novnc-scaling'),
            cmd: cmd
        });
        var nw = window.open("?" + url, '_blank', 
"innerWidth=745,innerheight=427");
diff --git a/www/manager6/VNCConsole.js b/www/manager6/VNCConsole.js
index cd8fa243..22c82257 100644
--- a/www/manager6/VNCConsole.js
+++ b/www/manager6/VNCConsole.js
@@ -41,12 +41,13 @@ Ext.define('PVE.noVncConsole', {
            items: box,
            listeners: {
                activate: function() {
+                   var sp = Ext.state.Manager.getProvider();
                    var queryDict = {
                        console: me.consoleType, // kvm, lxc, upgrade or shell
                        vmid: me.vmid,
                        node: me.nodename,
                        cmd: me.cmd,
-                       resize: 'scale'
+                       resize: sp.get('novnc-scaling'),
                    };
                    queryDict[type] = 1;
                    PVE.Utils.cleanEmptyObjectKeys(queryDict);
diff --git a/www/manager6/window/Settings.js b/www/manager6/window/Settings.js
index 1a4d8599..0f7764ea 100644
--- a/www/manager6/window/Settings.js
+++ b/www/manager6/window/Settings.js
@@ -37,6 +37,13 @@ Ext.define('PVE.window.Settings', {
 
            var username = sp.get('login-username') || Proxmox.Utils.noneText;
            me.lookupReference('savedUserName').setValue(username);
+           var vncMode = sp.get('novnc-scaling');
+           if (vncMode === 'scale') {
+               me.lookupReference('radio-vnc-scale').setValue(true);
+           } else {
+               // vncMode is 'off'
+               me.lookupReference('radio-vnc-off').setValue(true);
+           }
 
            var settings = ['fontSize', 'fontFamily', 'letterSpacing', 
'lineHeight'];
            settings.forEach(function(setting) {
@@ -246,7 +253,48 @@ Ext.define('PVE.window.Settings', {
                    text: gettext('Reset Layout'),
                    width: 'auto',
                    name: 'reset'
-               }
+               },
+               {
+                   xtype: 'box',
+                   autoEl: { tag: 'hr'}
+               },
+               {
+                   xtype: 'displayfield',
+                   fieldLabel: gettext('noVNC scaling mode'),
+                   labelAlign: 'left',
+                   labelWidth: '50%'
+               },
+               {
+                   layout: {
+                       type: 'hbox',
+                       align: 'middle'
+                   },
+                   border: false,
+                   xtype: 'radiogroup',
+                   items: [
+                       {
+                           xtype: 'radiofield',
+                           name: 'novnc-scaling',
+                           inputValue: 'scale',
+                           reference: 'radio-vnc-scale',
+                           boxLabel: 'Local Scaling',
+                       },
+                       {
+                           xtype: 'radiofield',
+                           name: 'novnc-scaling',
+                           inputValue: 'off',
+                           reference: 'radio-vnc-off',
+                           boxLabel: 'Off',
+                           margin: '0 0 0 10',
+                       },
+                   ],
+                   listeners: {
+                       change: function(el, newValue, undefined) {
+                           var sp = Ext.state.Manager.getProvider();
+                           sp.set('novnc-scaling', newValue['novnc-scaling']);
+                       }
+                   },
+               },
            ]
     },{
        xtype: 'fieldset',
-- 
2.20.1

_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to