Set focus/activate on HTML5 windows using visibilitychanged event as well (close #1401)

This commit is contained in:
Joshua Granick
2020-09-24 10:58:02 -07:00
parent 93eddd1f3d
commit d918341db0

View File

@@ -23,11 +23,12 @@ import lime.ui.Window;
@:access(lime.ui.Window) @:access(lime.ui.Window)
class HTML5Application class HTML5Application
{ {
private var gameDeviceCache = new Map<Int, GameDeviceData>();
private var accelerometer:Sensor; private var accelerometer:Sensor;
private var currentUpdate:Float; private var currentUpdate:Float;
private var deltaTime:Float; private var deltaTime:Float;
private var framePeriod:Float; private var framePeriod:Float;
private var gameDeviceCache = new Map<Int, GameDeviceData>();
private var hidden:Bool;
private var lastUpdate:Float; private var lastUpdate:Float;
private var nextUpdate:Float; private var nextUpdate:Float;
private var parent:Application; private var parent:Application;
@@ -441,12 +442,40 @@ class HTML5Application
switch (event.type) switch (event.type)
{ {
case "focus": case "focus":
parent.window.onFocusIn.dispatch(); if (hidden)
parent.window.onActivate.dispatch(); {
parent.window.onFocusIn.dispatch();
parent.window.onActivate.dispatch();
hidden = false;
}
case "blur": case "blur":
parent.window.onFocusOut.dispatch(); if (!hidden)
parent.window.onDeactivate.dispatch(); {
parent.window.onFocusOut.dispatch();
parent.window.onDeactivate.dispatch();
hidden = true;
}
case "visibilitychange":
if (Browser.document.hidden)
{
if (!hidden)
{
parent.window.onFocusOut.dispatch();
parent.window.onDeactivate.dispatch();
hidden = true;
}
}
else
{
if (hidden)
{
parent.window.onFocusIn.dispatch();
parent.window.onActivate.dispatch();
hidden = false;
}
}
case "resize": case "resize":
parent.window.__backend.handleResizeEvent(event); parent.window.__backend.handleResizeEvent(event);