Skip to content

Commit

Permalink
Merge pull request #2408 from AnalyticalGraphicsInc/mouse-move
Browse files Browse the repository at this point in the history
Mouse up/move events
  • Loading branch information
pjcozzi committed Jan 19, 2015
2 parents 9b26aaf + e278857 commit 5768935
Show file tree
Hide file tree
Showing 7 changed files with 255 additions and 221 deletions.
1 change: 1 addition & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ Change Log
* `Camera.setPositionCartographic` was deprecated in Cesium 1.6. It will be removed in Cesium 1.7. Use `Camera.setView`.
* `PolygonGraphics.positions` was deprecated and replaced with `PolygonGraphics.hierarchy`, whose value is a `PolygonHierarchy` instead of an array of positions. `PolygonGraphics.positions` will be removed in Cesium 1.8.
* The `Model.readyToRender` event was deprecated and will be removed in Cesium 1.9. Use the new `Model.readyPromise` instead.
* 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`.
* Improved performance of asynchronous geometry creation (as much as 20% faster in some use cases). [#2342](https://github.com/AnalyticalGraphicsInc/cesium/issues/2342)
* Added `PolylineVolumeGraphics` and `Entity.polylineVolume`
* Added `Camera.setView` (which use heading, pitch, and roll) and `Camera.roll`.
Expand Down
15 changes: 12 additions & 3 deletions Source/Core/ScreenSpaceEventHandler.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ define([
'./Cartesian2',
'./defaultValue',
'./defined',
'./deprecationWarning',
'./destroyObject',
'./DeveloperError',
'./KeyboardEventModifier',
Expand All @@ -13,6 +14,7 @@ define([
Cartesian2,
defaultValue,
defined,
deprecationWarning,
destroyObject,
DeveloperError,
KeyboardEventModifier,
Expand All @@ -21,7 +23,7 @@ define([

function getPosition(screenSpaceEventHandler, event, result) {
var element = screenSpaceEventHandler._element;
if (element === document) {
if (element === document || !screenSpaceEventHandler._mouseMoveOnDocument) {
result.x = event.clientX;
result.y = event.clientY;
return result;
Expand Down Expand Up @@ -77,7 +79,7 @@ define([
// some listeners may be registered on the document, so we still get events even after
// leaving the bounds of element.
// this is affected by the existence of an undocumented disableRootEvents property on element.
var alternateElement = !defined(element.disableRootEvents) ? document : element;
var alternateElement = !defined(element.disableRootEvents) && screenSpaceEventHandler._mouseMoveOnDocument ? document : element;

if (defined(window.PointerEvent)) {
registerListener(screenSpaceEventHandler, 'pointerdown', element, handlePointerDown);
Expand Down Expand Up @@ -636,9 +638,11 @@ 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.
*
* @constructor
*/
var ScreenSpaceEventHandler = function(element) {
var ScreenSpaceEventHandler = function(element, mouseMoveOnDocument) {
this._inputEvents = {};
this._buttonDown = undefined;
this._isPinching = false;
Expand All @@ -659,6 +663,11 @@ 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.');
}

registerListeners(this);
};

Expand Down
11 changes: 6 additions & 5 deletions Source/Scene/CameraEventAggregator.js
Original file line number Diff line number Diff line change
Expand Up @@ -74,13 +74,13 @@ define([
Cartesian2.clone(event.position, eventStartPosition[key]);
}, ScreenSpaceEventType.PINCH_START, modifier);

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

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

aggregator._eventHandler.setInputAction(function() {
aggregator._documentEventHandler.setInputAction(function() {
aggregator._buttonsDown = Math.max(aggregator._buttonsDown - 1, 0);
isDown[key] = false;
releaseTime[key] = new Date();
Expand Down Expand Up @@ -219,7 +219,7 @@ define([
}
}

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

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

this._update = {};
this._movement = {};
Expand Down
2 changes: 1 addition & 1 deletion Source/Widgets/CesiumWidget/CesiumWidget.js
Original file line number Diff line number Diff line change
Expand Up @@ -293,7 +293,7 @@ define([
scene.terrainProvider = options.terrainProvider;
}

this._screenSpaceEventHandler = new ScreenSpaceEventHandler(canvas);
this._screenSpaceEventHandler = new ScreenSpaceEventHandler(canvas, false);

if (defined(options.sceneMode)) {
if (options.sceneMode === SceneMode.SCENE2D) {
Expand Down
100 changes: 0 additions & 100 deletions Specs/MockCanvas.js

This file was deleted.

Loading

0 comments on commit 5768935

Please sign in to comment.