diff options
author | Pierre Ossman <ossman@cendio.se> | 2018-08-16 17:50:09 +0200 |
---|---|---|
committer | Pierre Ossman <ossman@cendio.se> | 2018-08-16 17:50:09 +0200 |
commit | ce6287574fa98b2fb7c2638cde1b5628d29bdfdb (patch) | |
tree | ac913c7c5593ebc057872f840a81aa2f91bc07bb | |
parent | c995c0863edd45a49927b84637e3faa28b17f34b (diff) | |
parent | 7407c1f4e29a7c7d998edbcc4cbf379edd6b5d76 (diff) | |
download | novnc-ce6287574fa98b2fb7c2638cde1b5628d29bdfdb.tar.gz |
Merge branch 'hidpi_scale' of https://github.com/CendioOssman/noVNC
-rw-r--r-- | core/display.js | 7 | ||||
-rw-r--r-- | core/rfb.js | 7 | ||||
-rw-r--r-- | tests/test.mouse.js | 23 |
3 files changed, 26 insertions, 11 deletions
diff --git a/core/display.js b/core/display.js index 4955ce2..d6db075 100644 --- a/core/display.js +++ b/core/display.js @@ -168,6 +168,9 @@ export default class Display { height = this._fb_height; } + width = Math.floor(width); + height = Math.floor(height); + if (width > this._fb_width) { width = this._fb_width; } @@ -524,8 +527,8 @@ export default class Display { // style width to a number, the canvas is cleared. // However, if you set the style width to a string // ('NNNpx'), the canvas is scaled without clearing. - const width = Math.round(factor * vp.w) + 'px'; - const height = Math.round(factor * vp.h) + 'px'; + const width = factor * vp.w + 'px'; + const height = factor * vp.h + 'px'; if ((this._target.style.width !== width) || (this._target.style.height !== height)) { diff --git a/core/rfb.js b/core/rfb.js index 0276f16..a52c00d 100644 --- a/core/rfb.js +++ b/core/rfb.js @@ -547,7 +547,8 @@ export default class RFB extends EventTargetMixin { } const size = this._screenSize(); - RFB.messages.setDesktopSize(this._sock, size.w, size.h, + RFB.messages.setDesktopSize(this._sock, + Math.floor(size.w), Math.floor(size.h), this._screen_id, this._screen_flags); Log.Debug('Requested new desktop size: ' + @@ -556,8 +557,8 @@ export default class RFB extends EventTargetMixin { // Gets the the size of the available screen _screenSize() { - return { w: this._screen.offsetWidth, - h: this._screen.offsetHeight }; + let r = this._screen.getBoundingClientRect(); + return { w: r.width, h: r.height }; } _fixScrollbars() { diff --git a/tests/test.mouse.js b/tests/test.mouse.js index dd8046c..9630706 100644 --- a/tests/test.mouse.js +++ b/tests/test.mouse.js @@ -5,12 +5,23 @@ import Mouse from '../core/input/mouse.js'; describe('Mouse Event Handling', function() { "use strict"; - // This function is only used on target (the canvas) - // and for these tests we can assume that the canvas is 100x100 - // located at coordinates 10x10 - sinon.stub(Element.prototype, 'getBoundingClientRect').returns( - {left: 10, right: 110, top: 10, bottom: 110, width: 100, height: 100}); - const target = document.createElement('canvas'); + let target; + + beforeEach(function () { + // For these tests we can assume that the canvas is 100x100 + // located at coordinates 10x10 + target = document.createElement('canvas'); + target.style.position = "absolute"; + target.style.top = "10px"; + target.style.left = "10px"; + target.style.width = "100px"; + target.style.height = "100px"; + document.body.appendChild(target); + }); + afterEach(function () { + document.body.removeChild(target); + target = null; + }); // The real constructors might not work everywhere we // want to run these tests |