From d918341db03f95898fafe1b9f646e697d9f10370 Mon Sep 17 00:00:00 2001 From: Joshua Granick Date: Thu, 24 Sep 2020 10:58:02 -0700 Subject: [PATCH] Set focus/activate on HTML5 windows using visibilitychanged event as well (close #1401) --- .../backend/html5/HTML5Application.hx | 39 ++++++++++++++++--- 1 file changed, 34 insertions(+), 5 deletions(-) diff --git a/src/lime/_internal/backend/html5/HTML5Application.hx b/src/lime/_internal/backend/html5/HTML5Application.hx index 8d9064185..117a970bb 100644 --- a/src/lime/_internal/backend/html5/HTML5Application.hx +++ b/src/lime/_internal/backend/html5/HTML5Application.hx @@ -23,11 +23,12 @@ import lime.ui.Window; @:access(lime.ui.Window) class HTML5Application { - private var gameDeviceCache = new Map(); private var accelerometer:Sensor; private var currentUpdate:Float; private var deltaTime:Float; private var framePeriod:Float; + private var gameDeviceCache = new Map(); + private var hidden:Bool; private var lastUpdate:Float; private var nextUpdate:Float; private var parent:Application; @@ -441,12 +442,40 @@ class HTML5Application switch (event.type) { case "focus": - parent.window.onFocusIn.dispatch(); - parent.window.onActivate.dispatch(); + if (hidden) + { + parent.window.onFocusIn.dispatch(); + parent.window.onActivate.dispatch(); + hidden = false; + } case "blur": - parent.window.onFocusOut.dispatch(); - parent.window.onDeactivate.dispatch(); + if (!hidden) + { + 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": parent.window.__backend.handleResizeEvent(event);