From d1a1e0e529833c4ada0f6cc422c3f5b02ecbee60 Mon Sep 17 00:00:00 2001 From: Pierre Ossman Date: Wed, 16 Aug 2017 11:00:04 +0200 Subject: [PATCH] Adjust scaling when session size changes Session size changes can be initiated from the server, and not just from the client. Make sure we update the scaling when this happens. --- app/ui.js | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/app/ui.js b/app/ui.js index 11705a09..1b360438 100644 --- a/app/ui.js +++ b/app/ui.js @@ -1242,14 +1242,33 @@ var UI = { } }, 500); - } else if (resizeMode === 'scale' || resizeMode === 'downscale') { - var downscaleOnly = resizeMode === 'downscale'; - display.autoscale(screen.w, screen.h, downscaleOnly); - UI.fixScrollbars(); + } else { + UI.updateScaling(); } } }, + // Re-calculate local scaling + updateScaling: function() { + if (!UI.rfb) return; + + var resizeMode = UI.getSetting('resize'); + if (resizeMode !== 'scale' && resizeMode !== 'downscale') { + return; + } + + var screen = UI.screenSize(); + + if (!screen || !UI.connected || !UI.rfb.get_display()) { + return; + } + + var display = UI.rfb.get_display(); + var downscaleOnly = resizeMode === 'downscale'; + display.autoscale(screen.w, screen.h, downscaleOnly); + UI.fixScrollbars(); + }, + // Gets the the size of the available viewport in the browser window screenSize: function() { var screen = document.getElementById('noVNC_screen'); @@ -1674,6 +1693,7 @@ var UI = { updateSessionSize: function(rfb, width, height) { UI.updateViewClip(); + UI.updateScaling(); UI.fixScrollbars(); },