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(); },