Ver Fonte

located key events at current mouse position to perform normal propagation instead of current-over one (allow cancel/propagate)

ncannasse há 11 anos atrás
pai
commit
2ff679f675
2 ficheiros alterados com 7 adições e 16 exclusões
  1. 3 12
      h2d/Scene.hx
  2. 4 4
      hxd/Stage.hx

+ 3 - 12
h2d/Scene.hx

@@ -99,24 +99,15 @@ class Scene extends Layers implements h3d.IDrawable {
 		case EPush: cancelFocus = true; checkPush = true;
 		case ERelease: checkPush = true;
 		case EKeyUp, EKeyDown, EWheel:
-			if( currentFocus != null )
+			if( currentFocus != null ) {
 				currentFocus.handleEvent(event);
-			else {
-				if( currentOver != null ) {
-					event.propagate = true;
-					currentOver.handleEvent(event);
-					if( !event.propagate ) return;
-				}
-				dispatchListeners(event);
+				if( !event.propagate )
+					return;
 			}
-			return;
 		default:
 		}
 		for( i in interactive ) {
 			
-
-			// TODO : we are not sure that the positions are correctly updated !
-			
 			// this is a bit tricky since we are not in the not-euclide viewport space
 			// (r = ratio correction)
 			var dx = rx - i.absX;

+ 4 - 4
hxd/Stage.hx

@@ -181,14 +181,14 @@ class Stage {
 	}
 	
 	function onKeyUp(e:flash.events.KeyboardEvent) {
-		var ev = new Event(EKeyUp);
+		var ev = new Event(EKeyUp, mouseX, mouseY);
 		ev.keyCode = e.keyCode;
 		ev.charCode = getCharCode(e);
 		event(ev);
 	}
 
 	function onKeyDown(e:flash.events.KeyboardEvent) {
-		var ev = new Event(EKeyDown);
+		var ev = new Event(EKeyDown, mouseX, mouseY);
 		ev.keyCode = e.keyCode;
 		ev.charCode = getCharCode(e);
 		event(ev);
@@ -302,14 +302,14 @@ class Stage {
 	}
 	
 	function onKeyUp(e:js.html.KeyboardEvent) {
-		var ev = new Event(EKeyUp);
+		var ev = new Event(EKeyUp, mouseX, mouseY);
 		ev.keyCode = e.keyCode;
 		ev.charCode = e.charCode;
 		event(ev);
 	}
 
 	function onKeyDown(e:js.html.KeyboardEvent) {
-		var ev = new Event(EKeyDown);
+		var ev = new Event(EKeyDown, mouseX, mouseY);
 		ev.keyCode = e.keyCode;
 		ev.charCode = e.charCode;
 		event(ev);