mirror of
https://github.com/discourse/discourse.git
synced 2025-06-06 12:04:41 +08:00
FIX: puts focus-event at application level (#7568)
Also attempts to use simpler and newer APIs
This commit is contained in:
@ -0,0 +1,36 @@
|
||||
function gotFocus() {
|
||||
if (!Discourse.get("hasFocus")) {
|
||||
Discourse.setProperties({ hasFocus: true, notify: false });
|
||||
}
|
||||
}
|
||||
|
||||
function lostFocus() {
|
||||
if (Discourse.get("hasFocus")) {
|
||||
Discourse.set("hasFocus", false);
|
||||
}
|
||||
}
|
||||
|
||||
let onchange;
|
||||
|
||||
export default Ember.Mixin.create({
|
||||
ready() {
|
||||
this._super(...arguments);
|
||||
|
||||
onchange = () => {
|
||||
document.visibilityState === "hidden" ? lostFocus() : gotFocus();
|
||||
};
|
||||
|
||||
// Default to true
|
||||
Discourse.set("hasFocus", true);
|
||||
|
||||
document.addEventListener("visibilitychange", onchange);
|
||||
},
|
||||
|
||||
reset() {
|
||||
this._super(...arguments);
|
||||
|
||||
document.removeEventListener("visibilitychange", onchange);
|
||||
|
||||
onchange = undefined;
|
||||
}
|
||||
});
|
Reference in New Issue
Block a user