Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 41 additions & 23 deletions src/openfl/display/Application.hx
Original file line number Diff line number Diff line change
Expand Up @@ -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))
Expand Down Expand Up @@ -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)
Expand All @@ -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);

Expand All @@ -86,13 +120,19 @@ 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);
window.onFocusOut.add(onWindowFocusOut);
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);
Expand All @@ -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

Expand Down