Browse Source

Internet Explorer fix for UI.Number and UI.Integer slider.

Implemented similar fix to TransformControls using previous and current
pointer positions.
Grant Windes 11 years ago
parent
commit
5aa386ddf6
1 changed files with 22 additions and 4 deletions
  1. 22 4
      editor/js/libs/ui.js

+ 22 - 4
editor/js/libs/ui.js

@@ -596,6 +596,9 @@ UI.Number = function ( number ) {
 	var distance = 0;
 	var distance = 0;
 	var onMouseDownValue = 0;
 	var onMouseDownValue = 0;
 
 
+	var pointer = new THREE.Vector2();
+	var pointerOld = new THREE.Vector2();
+
 	var onMouseDown = function ( event ) {
 	var onMouseDown = function ( event ) {
 
 
 		event.preventDefault();
 		event.preventDefault();
@@ -604,6 +607,8 @@ UI.Number = function ( number ) {
 
 
 		onMouseDownValue = parseFloat( dom.value );
 		onMouseDownValue = parseFloat( dom.value );
 
 
+		pointerOld.set( event.clientX, event.clientY );
+
 		document.addEventListener( 'mousemove', onMouseMove, false );
 		document.addEventListener( 'mousemove', onMouseMove, false );
 		document.addEventListener( 'mouseup', onMouseUp, false );
 		document.addEventListener( 'mouseup', onMouseUp, false );
 
 
@@ -613,8 +618,10 @@ UI.Number = function ( number ) {
 
 
 		var currentValue = dom.value;
 		var currentValue = dom.value;
 
 
-		var movementX = event.movementX || event.webkitMovementX || event.mozMovementX || 0;
-		var movementY = event.movementY || event.webkitMovementY || event.mozMovementY || 0;
+		pointer.set( event.clientX, event.clientY );
+
+		var movementX = pointer.x - pointerOld.x;
+		var movementY = pointer.y - pointerOld.y;
 
 
 		distance += movementX - movementY;
 		distance += movementX - movementY;
 
 
@@ -624,6 +631,8 @@ UI.Number = function ( number ) {
 
 
 		if ( currentValue !== dom.value ) dom.dispatchEvent( changeEvent );
 		if ( currentValue !== dom.value ) dom.dispatchEvent( changeEvent );
 
 
+		pointerOld.set( event.clientX, event.clientY );
+
 	};
 	};
 
 
 	var onMouseUp = function ( event ) {
 	var onMouseUp = function ( event ) {
@@ -747,6 +756,9 @@ UI.Integer = function ( number ) {
 	var distance = 0;
 	var distance = 0;
 	var onMouseDownValue = 0;
 	var onMouseDownValue = 0;
 
 
+	var pointer = new THREE.Vector2();
+	var pointerOld = new THREE.Vector2();
+
 	var onMouseDown = function ( event ) {
 	var onMouseDown = function ( event ) {
 
 
 		event.preventDefault();
 		event.preventDefault();
@@ -755,6 +767,8 @@ UI.Integer = function ( number ) {
 
 
 		onMouseDownValue = parseFloat( dom.value );
 		onMouseDownValue = parseFloat( dom.value );
 
 
+		pointerOld.set( event.clientX, event.clientY );
+
 		document.addEventListener( 'mousemove', onMouseMove, false );
 		document.addEventListener( 'mousemove', onMouseMove, false );
 		document.addEventListener( 'mouseup', onMouseUp, false );
 		document.addEventListener( 'mouseup', onMouseUp, false );
 
 
@@ -764,8 +778,10 @@ UI.Integer = function ( number ) {
 
 
 		var currentValue = dom.value;
 		var currentValue = dom.value;
 
 
-		var movementX = event.movementX || event.webkitMovementX || event.mozMovementX || 0;
-		var movementY = event.movementY || event.webkitMovementY || event.mozMovementY || 0;
+		pointer.set( event.clientX, event.clientY );
+
+		var movementX = pointer.x - pointerOld.x;
+		var movementY = pointer.y - pointerOld.y;
 
 
 		distance += movementX - movementY;
 		distance += movementX - movementY;
 
 
@@ -775,6 +791,8 @@ UI.Integer = function ( number ) {
 
 
 		if ( currentValue !== dom.value ) dom.dispatchEvent( changeEvent );
 		if ( currentValue !== dom.value ) dom.dispatchEvent( changeEvent );
 
 
+		pointerOld.set( event.clientX, event.clientY );
+
 	};
 	};
 
 
 	var onMouseUp = function ( event ) {
 	var onMouseUp = function ( event ) {