diff --git a/src/openfl/display/Application.hx b/src/openfl/display/Application.hx index 571ed91ecb..7912421c72 100644 --- a/src/openfl/display/Application.hx +++ b/src/openfl/display/Application.hx @@ -4,6 +4,7 @@ import openfl.utils._internal.Lib; import openfl.events.Event; #if lime import lime.app.Application as LimeApplication; +import lime.ui.Window as LimeWindow; import lime.ui.WindowAttributes; #end #if ((sys || air) && (!flash_doc_gen || air_doc_gen)) @@ -60,9 +61,35 @@ class Application #if lime extends LimeApplication #end } #if lime - public override function createWindow(attributes:WindowAttributes):Window + @:noCompletion override public function createWindow(attributes:WindowAttributes):Window + { + return cast super.createWindow(attributes); + } + + @:noCompletion override public function exec():Int + { + #if (!flash && sys && (!flash_doc_gen || air_doc_gen)) + // wait for the first update to dispatch invoke event + // to ensure that the document class constructor has completed + onUpdate.add(function(_):Void + { + if (NativeApplication.nativeApplication.hasEventListener(InvokeEvent.INVOKE)) + { + var args = Sys.args(); + var cwd = new openfl.filesystem.File(Sys.getCwd()); + var invokeEvent = new openfl.events.InvokeEvent(InvokeEvent.INVOKE, false, false, cwd, args); + NativeApplication.nativeApplication.dispatchEvent(invokeEvent); + } + }, true); + #end + + return super.exec(); + } + + @:noCompletion override function __createWindow(attributes:WindowAttributes):Window { var window = new Window(this, attributes); + if (window.id == -1) return null; #if (!flash && !macro) if (Lib.current.__loaderInfo.width == -1) @@ -72,6 +99,13 @@ class Application #if lime extends LimeApplication #end } #end + return window; + } + + @:noCompletion override function __addWindow(window:LimeWindow):Void + { + if (window == null) return; + __windows.push(window); __windowByID.set(window.id, window); @@ -86,6 +120,10 @@ class Application #if lime extends LimeApplication #end window.onRenderContextRestored.add(onRenderContextRestored); window.onDeactivate.add(onWindowDeactivate); window.onDropFile.add(onWindowDropFile); + window.onDropText.add(onWindowDropText); + window.onDropBegin.add(onWindowDropBegin); + window.onDropComplete.add(onWindowDropComplete); + window.onDropPosition.add(onWindowDropPosition); window.onEnter.add(onWindowEnter); window.onExpose.add(onWindowExpose); window.onFocusIn.add(onWindowFocusIn); @@ -93,6 +131,8 @@ class Application #if lime extends LimeApplication #end window.onFullscreen.add(onWindowFullscreen); window.onKeyDown.add(onKeyDown); window.onKeyUp.add(onKeyUp); + window.onKeyDownPrecise.add(onKeyDownPrecise); + window.onKeyUpPrecise.add(onKeyUpPrecise); window.onLeave.add(onWindowLeave); window.onMinimize.add(onWindowMinimize); window.onMouseDown.add(onMouseDown); @@ -117,28 +157,6 @@ class Application #if lime extends LimeApplication #end } onCreateWindow.dispatch(window); - - return window; - } - - @:noCompletion override public function exec():Int - { - #if (!flash && sys && (!flash_doc_gen || air_doc_gen)) - // wait for the first update to dispatch invoke event - // to ensure that the document class constructor has completed - onUpdate.add(function(_):Void - { - if (NativeApplication.nativeApplication.hasEventListener(InvokeEvent.INVOKE)) - { - var args = Sys.args(); - var cwd = new openfl.filesystem.File(Sys.getCwd()); - var invokeEvent = new openfl.events.InvokeEvent(InvokeEvent.INVOKE, false, false, cwd, args); - NativeApplication.nativeApplication.dispatchEvent(invokeEvent); - } - }, true); - #end - - return super.exec(); } #end