summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre Ossman <ossman@cendio.se>2016-11-11 14:29:03 +0100
committerPierre Ossman <ossman@cendio.se>2016-12-09 09:20:50 +0100
commit3f781f2aa34bdec0b6d06eaba91827a822a07c6e (patch)
tree09bbbe911672f2ed9e19ae4c23d492631f8c5988
parente549ae074fcea9febde32c0fa260a64c15cc1b8e (diff)
downloadnovnc-3f781f2aa34bdec0b6d06eaba91827a822a07c6e.tar.gz
Remove max dimension handling
The viewport handling is now a lot clearer, so simply limit the size of the viewport in the caller rather than having this extra layer of checks.
-rw-r--r--app/ui.js10
-rw-r--r--core/display.js45
-rw-r--r--tests/test.display.js35
3 files changed, 10 insertions, 80 deletions
diff --git a/app/ui.js b/app/ui.js
index e5b6f56..f238fad 100644
--- a/app/ui.js
+++ b/app/ui.js
@@ -1107,11 +1107,6 @@ var UI;
// is finished we wait 0.5 seconds before sending the request.
clearTimeout(UI.resizeTimeout);
UI.resizeTimeout = setTimeout(function(){
-
- // Limit the viewport to the size of the browser window
- display.set_maxWidth(screen.w);
- display.set_maxHeight(screen.h);
-
// Request a remote size covering the viewport
if (UI.rfb.requestDesktopSize(screen.w, screen.h)) {
Util.Debug('Requested new desktop size: ' +
@@ -1192,8 +1187,6 @@ var UI;
if (new_clip && size) {
// When clipping is enabled, the screen is limited to
// the size of the browser window.
- display.set_maxWidth(size.w);
- display.set_maxHeight(size.h);
var screen = document.getElementById('noVNC_screen');
var canvas = document.getElementById('noVNC_canvas');
@@ -1209,9 +1202,6 @@ var UI;
display.viewportChangeSize(new_w, size.h);
} else {
- // Disable max dimensions
- display.set_maxWidth(0);
- display.set_maxHeight(0);
display.viewportChangeSize();
}
},
diff --git a/core/display.js b/core/display.js
index 58a423d..fd0d9ee 100644
--- a/core/display.js
+++ b/core/display.js
@@ -26,10 +26,6 @@
this._fb_width = 0;
this._fb_height = 0;
- // the size limit of the viewport (start disabled)
- this._maxWidth = 0;
- this._maxHeight = 0;
-
// the visible "physical canvas" viewport
this._viewportLoc = { 'x': 0, 'y': 0, 'w': 0, 'h': 0 };
@@ -169,16 +165,6 @@
var vp = this._viewportLoc;
if (vp.w !== width || vp.h !== height) {
-
- if (this._viewport) {
- if (this._maxWidth !== 0 && width > this._maxWidth) {
- width = this._maxWidth;
- }
- if (this._maxHeight !== 0 && height > this._maxHeight) {
- height = this._maxHeight;
- }
- }
-
vp.w = width;
vp.h = height;
@@ -553,16 +539,7 @@
clippingDisplay: function () {
var vp = this._viewportLoc;
-
- var fbClip = this._fb_width > vp.w || this._fb_height > vp.h;
- var limitedVp = this._maxWidth !== 0 && this._maxHeight !== 0;
- var clipping = false;
-
- if (limitedVp) {
- clipping = vp.w > this._maxWidth || vp.h > this._maxHeight;
- }
-
- return fbClip || (limitedVp && clipping);
+ return this._fb_width > vp.w || this._fb_height > vp.h;
},
// Overridden getters/setters
@@ -616,21 +593,9 @@
// Private Methods
_rescale: function (factor) {
this._scale = factor;
-
- var w;
- var h;
-
- if (this._viewport &&
- this._maxWidth !== 0 && this._maxHeight !== 0) {
- w = Math.min(this._fb_width, this._maxWidth);
- h = Math.min(this._fb_height, this._maxHeight);
- } else {
- w = this._fb_width;
- h = this._fb_height;
- }
-
- this._target.style.width = Math.round(factor * w) + 'px';
- this._target.style.height = Math.round(factor * h) + 'px';
+ var vp = this._viewportLoc;
+ this._target.style.width = Math.round(factor * vp.w) + 'px';
+ this._target.style.height = Math.round(factor * vp.h) + 'px';
},
_setFillColor: function (color) {
@@ -776,8 +741,6 @@
['viewport', 'rw', 'bool'], // Use viewport clipping
['width', 'ro', 'int'], // Display area width
['height', 'ro', 'int'], // Display area height
- ['maxWidth', 'rw', 'int'], // Viewport max width (0 if disabled)
- ['maxHeight', 'rw', 'int'], // Viewport max height (0 if disabled)
['render_mode', 'ro', 'str'], // Canvas rendering mode (read-only)
diff --git a/tests/test.display.js b/tests/test.display.js
index 663f0d7..dd750ca 100644
--- a/tests/test.display.js
+++ b/tests/test.display.js
@@ -83,10 +83,10 @@ describe('Display/Canvas Helper', function () {
expect(display).to.have.displayed(expected);
});
- if('should resize the target canvas when resizing the viewport', function() {
+ it('should resize the target canvas when resizing the viewport', function() {
display.viewportChangeSize(2, 2);
- expect(canvas.width).to.equal(2);
- expect(canvas.height).to.equal(2);
+ expect(display._target.width).to.equal(2);
+ expect(display._target.height).to.equal(2);
});
it('should redraw when moving the viewport', function () {
@@ -100,40 +100,17 @@ describe('Display/Canvas Helper', function () {
display.viewportChangeSize(2, 2);
expect(display.flip).to.have.been.calledOnce;
});
- });
-
- describe('clipping', function () {
- var display;
- beforeEach(function () {
- display = new Display({ target: document.createElement('canvas'), prefer_js: false, viewport: true });
- display.resize(4, 3);
- });
- it('should report true when no max-size and framebuffer > viewport', function () {
- display.viewportChangeSize(2,2);
+ it('should report clipping when framebuffer > viewport', function () {
var clipping = display.clippingDisplay();
expect(clipping).to.be.true;
});
- it('should report false when no max-size and framebuffer = viewport', function () {
+ it('should report not clipping when framebuffer = viewport', function () {
+ display.viewportChangeSize(5, 5);
var clipping = display.clippingDisplay();
expect(clipping).to.be.false;
});
-
- it('should report true when viewport > max-size and framebuffer > viewport', function () {
- display.viewportChangeSize(2,2);
- display.set_maxWidth(1);
- display.set_maxHeight(2);
- var clipping = display.clippingDisplay();
- expect(clipping).to.be.true;
- });
-
- it('should report true when viewport > max-size and framebuffer = viewport', function () {
- display.set_maxWidth(1);
- display.set_maxHeight(2);
- var clipping = display.clippingDisplay();
- expect(clipping).to.be.true;
- });
});
describe('resizing', function () {