Skip to content

Commit

Permalink
Reverts changes from #2408 and #2417. Adds an option to ScreenSpaceEv…
Browse files Browse the repository at this point in the history
…entHandler to listen on the document for pointer up and move events.
  • Loading branch information
bagnell authored and kring committed Jan 29, 2015
1 parent 0c3c226 commit 3fad138
Show file tree
Hide file tree
Showing 7 changed files with 23 additions and 42 deletions.
2 changes: 1 addition & 1 deletion Apps/Sandcastle/gallery/3D Models.html
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@
});
}

var handler = new Cesium.ScreenSpaceEventHandler(scene.canvas);
var handler = new Cesium.ScreenSpaceEventHandler(scene.canvas, false);
handler.setInputAction(function(movement) {
var pick = scene.pick(movement.endPosition);
if (Cesium.defined(pick) && Cesium.defined(pick.node) && Cesium.defined(pick.mesh)) {
Expand Down
2 changes: 1 addition & 1 deletion Apps/Sandcastle/gallery/Camera Tutorial.html
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@
moveRight : false
};

var handler = new Cesium.ScreenSpaceEventHandler(canvas);
var handler = new Cesium.ScreenSpaceEventHandler(canvas, true);

handler.setInputAction(function(movement) {
flags.looking = true;
Expand Down
6 changes: 3 additions & 3 deletions Apps/Sandcastle/gallery/Picking.html
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@
label = labels.add();

// Mouse over the globe to see the cartographic position
handler = new Cesium.ScreenSpaceEventHandler(scene.canvas);
handler = new Cesium.ScreenSpaceEventHandler(scene.canvas, false);
handler.setInputAction(function(movement) {
var cartesian = viewer.camera.pickEllipsoid(movement.endPosition, ellipsoid);
if (cartesian) {
Expand All @@ -109,7 +109,7 @@
addBillboard(scene);

// If the mouse is over the billboard, change its scale and color
handler = new Cesium.ScreenSpaceEventHandler(scene.canvas);
handler = new Cesium.ScreenSpaceEventHandler(scene.canvas, false);
handler.setInputAction(
function (movement) {
if (Cesium.defined(billboard)) {
Expand All @@ -133,7 +133,7 @@
addOverlappingPolygons(scene);

// Move the primitive that the mouse is over to the top.
handler = new Cesium.ScreenSpaceEventHandler(scene.canvas);
handler = new Cesium.ScreenSpaceEventHandler(scene.canvas, false);
handler.setInputAction(function(movement) {
// clear picked flags
var numberOfPrimitves = primitives.length;
Expand Down
10 changes: 6 additions & 4 deletions Source/Core/ScreenSpaceEventHandler.js
Original file line number Diff line number Diff line change
Expand Up @@ -634,7 +634,7 @@ define([
* @alias ScreenSpaceEventHandler
*
* @param {Canvas} [element=document] The element to add events to.
* @param {Boolean} [mouseMoveOnDocument=true] Listen for mouse/pointer/touch down and move events on the document.
* @param {Boolean} [mouseMoveOnDocument=true] Listen for mouse/pointer/touch up and move events on the document.
*
* @constructor
*/
Expand All @@ -659,11 +659,13 @@ define([

this._element = defaultValue(element, document);

this._mouseMoveOnDocument = defaultValue(mouseMoveOnDocument, true);
if (this._mouseMoveOnDocument) {
deprecationWarning('ScreenSpaceEventHandler', 'The mouseMoveOnDocument parameter to the ScreenSpaceEventHandler constructor was deprecated in Cesium 1.6. It will be removed in Cesium 1.7. ScreenSpaceEventHandler will be constructed as if mouseMoveOnDocument is false.');
if (!defined(mouseMoveOnDocument)) {
deprecationWarning('ScreenSpaceEventHandler', 'The default value for the mouseMoveOnDocument parameter to the ScreenSpaceEventHandler constructor was deprecated in Cesium 1.6. The default will change from true to false in Cesium 1.7.');
mouseMoveOnDocument = true;
}

this._mouseMoveOnDocument = mouseMoveOnDocument;

registerListeners(this);
};

Expand Down
39 changes: 9 additions & 30 deletions Source/Scene/CameraEventAggregator.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,6 @@ define([
Cartesian2.clone(pinchMovement.angleAndHeight.endPosition, result.angleAndHeight.endPosition);
}

function transformDocumentCoordinatesToCanvasCoordinates(coordinates, canvasBoundingRectangle) {
coordinates.x -= canvasBoundingRectangle.left;
coordinates.y -= canvasBoundingRectangle.top;
}

function listenToPinch(aggregator, modifier, canvas) {
var key = getKey(CameraEventType.PINCH, modifier);

Expand Down Expand Up @@ -79,19 +74,13 @@ define([
Cartesian2.clone(event.position, eventStartPosition[key]);
}, ScreenSpaceEventType.PINCH_START, modifier);

aggregator._documentEventHandler.setInputAction(function() {
aggregator._eventHandler.setInputAction(function() {
aggregator._buttonsDown = Math.max(aggregator._buttonsDown - 1, 0);
isDown[key] = false;
releaseTime[key] = new Date();
}, ScreenSpaceEventType.PINCH_END, modifier);

aggregator._documentEventHandler.setInputAction(function(mouseMovement) {
var canvasBoundingRectangle = canvas.getBoundingClientRect();
transformDocumentCoordinatesToCanvasCoordinates(mouseMovement.distance.startPosition, canvasBoundingRectangle);
transformDocumentCoordinatesToCanvasCoordinates(mouseMovement.distance.endPosition, canvasBoundingRectangle);
transformDocumentCoordinatesToCanvasCoordinates(mouseMovement.angleAndHeight.startPosition, canvasBoundingRectangle);
transformDocumentCoordinatesToCanvasCoordinates(mouseMovement.angleAndHeight.endPosition, canvasBoundingRectangle);

aggregator._eventHandler.setInputAction(function(mouseMovement) {
if (isDown[key]) {
// Aggregate several input events into a single animation frame.
if (!update[key]) {
Expand Down Expand Up @@ -187,7 +176,7 @@ define([
Cartesian2.clone(event.position, eventStartPosition[key]);
}, down, modifier);

aggregator._documentEventHandler.setInputAction(function() {
aggregator._eventHandler.setInputAction(function() {
aggregator._buttonsDown = Math.max(aggregator._buttonsDown - 1, 0);
isDown[key] = false;
releaseTime[key] = new Date();
Expand All @@ -199,7 +188,7 @@ define([
Cartesian2.clone(mouseMovement.endPosition, result.endPosition);
}

function listenMouseMove(aggregator, modifier, canvas) {
function listenMouseMove(aggregator, modifier) {
var update = aggregator._update;
var movement = aggregator._movement;
var lastMovement = aggregator._lastMovement;
Expand Down Expand Up @@ -230,16 +219,7 @@ define([
}
}

var mouseMovementScratch = {
startPosition : new Cartesian2(),
endPosition : new Cartesian2()
};

aggregator._documentEventHandler.setInputAction(function(mouseMovement) {
var canvasBoundingRectangle = canvas.getBoundingClientRect();
transformDocumentCoordinatesToCanvasCoordinates(mouseMovement.startPosition, canvasBoundingRectangle);
transformDocumentCoordinatesToCanvasCoordinates(mouseMovement.endPosition, canvasBoundingRectangle);

aggregator._eventHandler.setInputAction(function(mouseMovement) {
for ( var typeName in CameraEventType) {
if (CameraEventType.hasOwnProperty(typeName)) {
var type = CameraEventType[typeName];
Expand Down Expand Up @@ -282,8 +262,7 @@ define([
}
//>>includeEnd('debug');

this._eventHandler = new ScreenSpaceEventHandler(canvas, false);
this._documentEventHandler = new ScreenSpaceEventHandler(document, false);
this._eventHandler = new ScreenSpaceEventHandler(canvas, true);

this._update = {};
this._movement = {};
Expand All @@ -302,7 +281,7 @@ define([
listenMouseButtonDownUp(this, undefined, CameraEventType.LEFT_DRAG);
listenMouseButtonDownUp(this, undefined, CameraEventType.RIGHT_DRAG);
listenMouseButtonDownUp(this, undefined, CameraEventType.MIDDLE_DRAG);
listenMouseMove(this, undefined, canvas);
listenMouseMove(this, undefined);

for ( var modifierName in KeyboardEventModifier) {
if (KeyboardEventModifier.hasOwnProperty(modifierName)) {
Expand All @@ -313,7 +292,7 @@ define([
listenMouseButtonDownUp(this, modifier, CameraEventType.LEFT_DRAG);
listenMouseButtonDownUp(this, modifier, CameraEventType.RIGHT_DRAG);
listenMouseButtonDownUp(this, modifier, CameraEventType.MIDDLE_DRAG);
listenMouseMove(this, modifier, canvas);
listenMouseMove(this, modifier);
}
}
}
Expand Down Expand Up @@ -530,4 +509,4 @@ define([
};

return CameraEventAggregator;
});
});
2 changes: 1 addition & 1 deletion Source/Scene/SceneTransitioner.js
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,7 @@ define([

function createMorphHandler(transitioner, completeMorphFunction) {
if (transitioner._scene.completeMorphOnUserInput) {
transitioner._morphHandler = new ScreenSpaceEventHandler(transitioner._scene.canvas);
transitioner._morphHandler = new ScreenSpaceEventHandler(transitioner._scene.canvas, false);

var completeMorph = function() {
transitioner._morphCancelled = true;
Expand Down
4 changes: 2 additions & 2 deletions Specs/Core/ScreenSpaceEventHandlerSpec.js
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ defineSuite([
spyOn(element, 'setPointerCapture');
}

handler = new ScreenSpaceEventHandler(element);
handler = new ScreenSpaceEventHandler(element, false);
});

afterEach(function() {
Expand Down Expand Up @@ -992,7 +992,7 @@ defineSuite([
spyOn(element, 'addEventListener').andCallThrough();
spyOn(element, 'removeEventListener').andCallThrough();

handler = new ScreenSpaceEventHandler(element);
handler = new ScreenSpaceEventHandler(element, false);

expect(element.addEventListener.callCount).not.toEqual(0);
expect(element.removeEventListener.callCount).toEqual(0);
Expand Down

0 comments on commit 3fad138

Please sign in to comment.