Move Keyboard events back to Window
This commit is contained in:
@@ -13,7 +13,6 @@ import lime.app.Application;
|
||||
import lime.app.Config;
|
||||
import lime.audio.AudioManager;
|
||||
import lime.graphics.Renderer;
|
||||
import lime.ui.Keyboard;
|
||||
import lime.ui.KeyCode;
|
||||
import lime.ui.KeyModifier;
|
||||
import lime.ui.Touch;
|
||||
@@ -199,23 +198,27 @@ class FlashApplication {
|
||||
|
||||
private function handleKeyEvent (event:KeyboardEvent):Void {
|
||||
|
||||
var keyCode = convertKeyCode (event.keyCode);
|
||||
var modifier = (event.shiftKey ? (KeyModifier.SHIFT) : 0) | (event.ctrlKey ? (KeyModifier.CTRL) : 0) | (event.altKey ? (KeyModifier.ALT) : 0);
|
||||
|
||||
if (event.type == KeyboardEvent.KEY_DOWN) {
|
||||
if (parent.window != null) {
|
||||
|
||||
Keyboard.onKeyDown.dispatch (keyCode, modifier);
|
||||
var keyCode = convertKeyCode (event.keyCode);
|
||||
var modifier = (event.shiftKey ? (KeyModifier.SHIFT) : 0) | (event.ctrlKey ? (KeyModifier.CTRL) : 0) | (event.altKey ? (KeyModifier.ALT) : 0);
|
||||
|
||||
if (parent.window != null && parent.window.enableTextEvents) {
|
||||
if (event.type == KeyboardEvent.KEY_DOWN) {
|
||||
|
||||
parent.window.onTextInput.dispatch (String.fromCharCode (event.charCode));
|
||||
parent.window.onKeyDown.dispatch (keyCode, modifier);
|
||||
|
||||
if (parent.window != null && parent.window.enableTextEvents) {
|
||||
|
||||
parent.window.onTextInput.dispatch (String.fromCharCode (event.charCode));
|
||||
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
parent.window.onKeyUp.dispatch (keyCode, modifier);
|
||||
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
Keyboard.onKeyUp.dispatch (keyCode, modifier);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -7,7 +7,6 @@ import lime.app.Application;
|
||||
import lime.app.Config;
|
||||
import lime.audio.AudioManager;
|
||||
import lime.graphics.Renderer;
|
||||
import lime.ui.Keyboard;
|
||||
import lime.ui.KeyCode;
|
||||
import lime.ui.KeyModifier;
|
||||
import lime.ui.Window;
|
||||
@@ -262,17 +261,16 @@ class HTML5Application {
|
||||
|
||||
if (event.type == "keydown") {
|
||||
|
||||
Keyboard.onKeyDown.dispatch (keyCode, modifier);
|
||||
parent.window.onKeyDown.dispatch (keyCode, modifier);
|
||||
|
||||
} else {
|
||||
|
||||
Keyboard.onKeyUp.dispatch (keyCode, modifier);
|
||||
parent.window.onKeyUp.dispatch (keyCode, modifier);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -14,7 +14,6 @@ import lime.system.Display;
|
||||
import lime.system.DisplayMode;
|
||||
import lime.system.System;
|
||||
import lime.ui.Gamepad;
|
||||
import lime.ui.Keyboard;
|
||||
import lime.ui.Touch;
|
||||
import lime.ui.Window;
|
||||
|
||||
@@ -197,15 +196,21 @@ class NativeApplication {
|
||||
|
||||
private function handleKeyEvent ():Void {
|
||||
|
||||
switch (keyEventInfo.type) {
|
||||
var window = parent.windows.get (keyEventInfo.windowID);
|
||||
|
||||
if (window != null) {
|
||||
|
||||
case KEY_DOWN:
|
||||
switch (keyEventInfo.type) {
|
||||
|
||||
Keyboard.onKeyDown.dispatch (keyEventInfo.keyCode, keyEventInfo.modifier);
|
||||
|
||||
case KEY_UP:
|
||||
case KEY_DOWN:
|
||||
|
||||
window.onKeyDown.dispatch (keyEventInfo.keyCode, keyEventInfo.modifier);
|
||||
|
||||
Keyboard.onKeyUp.dispatch (keyEventInfo.keyCode, keyEventInfo.modifier);
|
||||
case KEY_UP:
|
||||
|
||||
window.onKeyUp.dispatch (keyEventInfo.keyCode, keyEventInfo.modifier);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -607,11 +612,13 @@ private class KeyEventInfo {
|
||||
public var keyCode:Int;
|
||||
public var modifier:Int;
|
||||
public var type:KeyEventType;
|
||||
public var windowID:Int;
|
||||
|
||||
|
||||
public function new (type:KeyEventType = null, keyCode:Int = 0, modifier:Int = 0) {
|
||||
public function new (type:KeyEventType = null, windowID:Int = 0, keyCode:Int = 0, modifier:Int = 0) {
|
||||
|
||||
this.type = type;
|
||||
this.windowID = windowID;
|
||||
this.keyCode = keyCode;
|
||||
this.modifier = modifier;
|
||||
|
||||
@@ -620,7 +627,7 @@ private class KeyEventInfo {
|
||||
|
||||
public function clone ():KeyEventInfo {
|
||||
|
||||
return new KeyEventInfo (type, keyCode, modifier);
|
||||
return new KeyEventInfo (type, windowID, keyCode, modifier);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -6,7 +6,6 @@ import lime.graphics.RenderContext;
|
||||
import lime.ui.Gamepad;
|
||||
import lime.ui.GamepadAxis;
|
||||
import lime.ui.GamepadButton;
|
||||
import lime.ui.Keyboard;
|
||||
import lime.ui.KeyCode;
|
||||
import lime.ui.KeyModifier;
|
||||
import lime.ui.Touch;
|
||||
@@ -62,8 +61,6 @@ class Application extends Module {
|
||||
onUpdate.add (update);
|
||||
|
||||
Gamepad.onConnect.add (onGamepadConnect);
|
||||
Keyboard.onKeyDown.add (onKeyDown);
|
||||
Keyboard.onKeyUp.add (onKeyUp);
|
||||
Touch.onStart.add (onTouchStart);
|
||||
Touch.onMove.add (onTouchMove);
|
||||
Touch.onEnd.add (onTouchEnd);
|
||||
@@ -131,6 +128,8 @@ class Application extends Module {
|
||||
window.onFocusIn.add (onWindowFocusIn.bind (window));
|
||||
window.onFocusOut.add (onWindowFocusOut.bind (window));
|
||||
window.onFullscreen.add (onWindowFullscreen.bind (window));
|
||||
window.onKeyDown.add (onKeyDown.bind (window));
|
||||
window.onKeyUp.add (onKeyUp.bind (window));
|
||||
window.onLeave.add (onWindowLeave.bind (window));
|
||||
window.onMinimize.add (onWindowMinimize.bind (window));
|
||||
window.onMouseDown.add (onMouseDown.bind (window));
|
||||
@@ -257,22 +256,22 @@ class Application extends Module {
|
||||
}
|
||||
|
||||
|
||||
public override function onKeyDown (keyCode:KeyCode, modifier:KeyModifier):Void {
|
||||
public override function onKeyDown (window:Window, keyCode:KeyCode, modifier:KeyModifier):Void {
|
||||
|
||||
for (module in modules) {
|
||||
|
||||
module.onKeyDown (keyCode, modifier);
|
||||
module.onKeyDown (window, keyCode, modifier);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
public override function onKeyUp (keyCode:KeyCode, modifier:KeyModifier):Void {
|
||||
public override function onKeyUp (window:Window, keyCode:KeyCode, modifier:KeyModifier):Void {
|
||||
|
||||
for (module in modules) {
|
||||
|
||||
module.onKeyUp (keyCode, modifier);
|
||||
module.onKeyUp (window, keyCode, modifier);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -63,18 +63,20 @@ interface IModule {
|
||||
|
||||
/**
|
||||
* Called when a key down event is fired
|
||||
* @param window The window dispatching the event
|
||||
* @param keyCode The code of the key that was pressed
|
||||
* @param modifier The modifier of the key that was pressed
|
||||
*/
|
||||
public function onKeyDown (keyCode:KeyCode, modifier:KeyModifier):Void;
|
||||
public function onKeyDown (window:Window, keyCode:KeyCode, modifier:KeyModifier):Void;
|
||||
|
||||
|
||||
/**
|
||||
* Called when a key up event is fired
|
||||
* @param window The window dispatching the event
|
||||
* @param keyCode The code of the key that was released
|
||||
* @param modifier The modifier of the key that was released
|
||||
*/
|
||||
public function onKeyUp (keyCode:KeyCode, modifier:KeyModifier):Void;
|
||||
public function onKeyUp (window:Window, keyCode:KeyCode, modifier:KeyModifier):Void;
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -76,18 +76,20 @@ class Module implements IModule {
|
||||
|
||||
/**
|
||||
* Called when a key down event is fired
|
||||
* @param window The window dispatching the event
|
||||
* @param keyCode The code of the key that was pressed
|
||||
* @param modifier The modifier of the key that was pressed
|
||||
*/
|
||||
public function onKeyDown (keyCode:KeyCode, modifier:KeyModifier):Void { }
|
||||
public function onKeyDown (window:Window, keyCode:KeyCode, modifier:KeyModifier):Void { }
|
||||
|
||||
|
||||
/**
|
||||
* Called when a key up event is fired
|
||||
* @param window The window dispatching the event
|
||||
* @param keyCode The code of the key that was released
|
||||
* @param modifier The modifier of the key that was released
|
||||
*/
|
||||
public function onKeyUp (keyCode:KeyCode, modifier:KeyModifier):Void { }
|
||||
public function onKeyUp (window:Window, keyCode:KeyCode, modifier:KeyModifier):Void { }
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
package lime.ui;
|
||||
|
||||
|
||||
import lime.app.Event;
|
||||
|
||||
|
||||
class Keyboard {
|
||||
|
||||
|
||||
public static var onKeyDown = new Event<KeyCode->KeyModifier->Void> ();
|
||||
public static var onKeyUp = new Event<KeyCode->KeyModifier->Void> ();
|
||||
|
||||
|
||||
}
|
||||
@@ -28,6 +28,8 @@ class Window {
|
||||
public var onFocusIn = new Event<Void->Void> ();
|
||||
public var onFocusOut = new Event<Void->Void> ();
|
||||
public var onFullscreen = new Event<Void->Void> ();
|
||||
public var onKeyDown = new Event<KeyCode->KeyModifier->Void> ();
|
||||
public var onKeyUp = new Event<KeyCode->KeyModifier->Void> ();
|
||||
public var onLeave = new Event<Void->Void> ();
|
||||
public var onMinimize = new Event<Void->Void> ();
|
||||
public var onMouseDown = new Event<Float->Float->Int->Void> ();
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
|
||||
#include <hx/CFFI.h>
|
||||
#include <stdint.h>
|
||||
|
||||
|
||||
namespace lime {
|
||||
@@ -30,6 +31,7 @@ namespace lime {
|
||||
double keyCode;
|
||||
int modifier;
|
||||
KeyEventType type;
|
||||
uint32_t windowID;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
|
||||
#include <hx/CFFI.h>
|
||||
#include <stdint.h>
|
||||
|
||||
|
||||
namespace lime {
|
||||
@@ -28,10 +29,10 @@ namespace lime {
|
||||
|
||||
static void Dispatch (TouchEvent* event);
|
||||
|
||||
int device;
|
||||
uint32_t device;
|
||||
float dx;
|
||||
float dy;
|
||||
int id;
|
||||
uint32_t id;
|
||||
float pressure;
|
||||
TouchEventType type;
|
||||
float x;
|
||||
|
||||
@@ -335,6 +335,7 @@ namespace lime {
|
||||
|
||||
keyEvent.keyCode = event->key.keysym.sym;
|
||||
keyEvent.modifier = event->key.keysym.mod;
|
||||
keyEvent.windowID = event->key.windowID;
|
||||
|
||||
KeyEvent::Dispatch (&keyEvent);
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@ namespace lime {
|
||||
static double id_keyCode;
|
||||
static int id_modifier;
|
||||
static int id_type;
|
||||
static int id_windowID;
|
||||
static bool init = false;
|
||||
|
||||
|
||||
@@ -19,6 +20,7 @@ namespace lime {
|
||||
keyCode = 0;
|
||||
modifier = 0;
|
||||
type = KEY_DOWN;
|
||||
windowID = 0;
|
||||
|
||||
}
|
||||
|
||||
@@ -32,6 +34,7 @@ namespace lime {
|
||||
id_keyCode = val_id ("keyCode");
|
||||
id_modifier = val_id ("modifier");
|
||||
id_type = val_id ("type");
|
||||
id_windowID = val_id ("windowID");
|
||||
init = true;
|
||||
|
||||
}
|
||||
@@ -41,6 +44,7 @@ namespace lime {
|
||||
alloc_field (object, id_keyCode, alloc_float (event->keyCode));
|
||||
alloc_field (object, id_modifier, alloc_int (event->modifier));
|
||||
alloc_field (object, id_type, alloc_int (event->type));
|
||||
alloc_field (object, id_windowID, alloc_int (event->windowID));
|
||||
|
||||
val_call0 (KeyEvent::callback->get ());
|
||||
|
||||
|
||||
Reference in New Issue
Block a user