Browse Source

Editor: fixed delete confirmation pop-up being triggered on all UI elements.

alteredq 12 năm trước cách đây
mục cha
commit
3b987332fe
2 tập tin đã thay đổi với 29 bổ sung14 xóa
  1. 5 14
      editor/index.html
  2. 24 0
      editor/js/ui/Viewport.js

+ 5 - 14
editor/index.html

@@ -83,6 +83,11 @@
 			viewport.setHeight( '-webkit-calc(100% - 32px)', '-moz-calc(100% - 32px)', 'calc(100% - 32px)' );
 			document.body.appendChild( viewport.dom );
 
+			// set focus on Viewport to get hotkeys working
+			// right from the initial page load
+
+			viewport.dom.focus();
+
 			var menubar = new Menubar( signals );
 			menubar.setWidth( '100%' );
 			menubar.setHeight( '32px' );
@@ -94,20 +99,6 @@
 			sidebar.setHeight( '-webkit-calc(100% - 32px)', '-moz-calc(100% - 32px)', 'calc(100% - 32px)' );
 			document.body.appendChild( sidebar.dom );
 
-			document.addEventListener( 'keydown', function ( event ) {
-
-				switch ( event.keyCode ) {
-
-					case 46: // delete
-
-						signals.objectRemoved.dispatch();
-
-						break;
-
-				}
-
-			} );
-
 			document.addEventListener( 'drop', function ( event ) {
 
 				event.preventDefault();

+ 24 - 0
editor/js/ui/Viewport.js

@@ -96,6 +96,8 @@ var Viewport = function ( signals ) {
 
 	var onMouseDown = function ( event ) {
 
+		container.dom.focus();
+
 		event.preventDefault();
 
 		if ( event.button === 0 ) {
@@ -231,6 +233,22 @@ var Viewport = function ( signals ) {
 
 	};
 
+	var onKeyDown = function ( event ) {
+
+		console.log( event );
+
+		switch ( event.keyCode ) {
+
+			case 46: // delete
+
+				signals.objectRemoved.dispatch();
+
+				break;
+
+		}
+
+	};
+
 	container.dom.addEventListener( 'mousemove', onMouseMove, false );
 	container.dom.addEventListener( 'mousedown', onMouseDown, false );
 	container.dom.addEventListener( 'mouseup', onMouseUp, false );
@@ -501,6 +519,12 @@ var Viewport = function ( signals ) {
 
 	animate();
 
+	// set up for hotkeys
+	// must be done here, otherwise it doesn't work
+
+	container.dom.tabIndex = 1;
+	container.dom.addEventListener( 'keydown', onKeyDown, false );
+
 	//
 
 	function updateMaterials( root ) {