Răsfoiți Sursa

TransformControls: Fixed key handler interferring with editor input fields.

Mr.doob 12 ani în urmă
părinte
comite
709790f8c7
2 a modificat fișierele cu 10 adăugiri și 6 ștergeri
  1. 0 2
      editor/js/Viewport.js
  2. 10 4
      examples/js/controls/TransformControls.js

+ 0 - 2
editor/js/Viewport.js

@@ -98,8 +98,6 @@ var Viewport = function ( signals ) {
 
 		event.preventDefault();
 
-		container.dom.focus();
-
 		onMouseDownPosition.set( event.layerX, event.layerY );
 
 		setTimeout( function (){

+ 10 - 4
examples/js/controls/TransformControls.js

@@ -553,8 +553,6 @@ THREE.TransformControls = function ( camera, domElement ) {
 
 		event.preventDefault();
 
-		scope.domElement.focus();
-
 		if ( event.button === 0 ) {
 
 			intersect = intersectObjects( event, pickerAxes[scope.mode].children );
@@ -765,6 +763,10 @@ THREE.TransformControls = function ( camera, domElement ) {
 
 	function onKeyDown( event ) {
 
+		var currentMode = scope.mode;
+		var currentSpace = scope.space;
+		var currentScale = scope.scale;
+
 		if ( event.keyCode == 87 ) { // W
 
 			if ( scope.mode == 'translate' ) scope.space = ( scope.space == 'world' ) ? 'local' : 'world';
@@ -799,8 +801,12 @@ THREE.TransformControls = function ( camera, domElement ) {
 
 		}
 
-		scope.setMode( scope.mode );
-		scope.dispatchEvent( changeEvent );
+		if ( scope.mode !== currentMode || scope.space !== currentSpace || scope.scale !== currentScale ) {
+
+			scope.setMode( scope.mode );
+			scope.dispatchEvent( changeEvent );
+
+		}
 
 	}