Added 'show' & 'hide' events to browser-window, fixed visibilitychange event in renderer
This commit is contained in:
parent
ee61ab2d26
commit
c1267b2320
8 changed files with 88 additions and 60 deletions
|
@ -4,10 +4,13 @@ const remote = require('electron').remote;
|
|||
var slice = [].slice;
|
||||
|
||||
// Cache browser window visibility
|
||||
var _isVisible = (function() {
|
||||
var _isVisible = true;
|
||||
var _isMinimized = false;
|
||||
(function() {
|
||||
var currentWindow;
|
||||
currentWindow = remote.getCurrentWindow();
|
||||
return currentWindow.isMinimized() || !currentWindow.isVisible();
|
||||
_isVisible = currentWindow.isVisible();
|
||||
_isMinimized = currentWindow.isMinimized();
|
||||
})();
|
||||
|
||||
// Helper function to resolve relative url.
|
||||
|
@ -177,10 +180,15 @@ if (process.openerId != null) {
|
|||
window.opener = BrowserWindowProxy.getOrCreate(process.openerId);
|
||||
}
|
||||
|
||||
ipcRenderer.on('ATOM_RENDERER_WINDOW_VISIBILITY_CHANGE', function (event, isVisible) {
|
||||
_isVisible = isVisible;
|
||||
ipcRenderer.on('ATOM_RENDERER_WINDOW_VISIBILITY_CHANGE', function (event, isVisible, isMinimized) {
|
||||
var hasChanged = _isVisible != isVisible || _isMinimized != isMinimized;
|
||||
|
||||
if (hasChanged) {
|
||||
_isVisible = isVisible;
|
||||
_isMinimized = isMinimized;
|
||||
|
||||
document.dispatchEvent(new Event('visibilitychange'));
|
||||
document.dispatchEvent(new Event('visibilitychange'));
|
||||
}
|
||||
});
|
||||
|
||||
ipcRenderer.on('ATOM_SHELL_GUEST_WINDOW_POSTMESSAGE', function(event, sourceId, message, sourceOrigin) {
|
||||
|
@ -227,12 +235,14 @@ Object.defineProperty(window.history, 'length', {
|
|||
|
||||
// Make document.hidden and document.visibilityState return the correct value.
|
||||
Object.defineProperty(document, 'hidden', {
|
||||
get: !_isVisible
|
||||
get: function () {
|
||||
return _isMinimized || !_isVisible;
|
||||
}
|
||||
});
|
||||
|
||||
Object.defineProperty(document, 'visibilityState', {
|
||||
get: function() {
|
||||
if (_isVisible) {
|
||||
if (_isVisible && !_isMinimized) {
|
||||
return "visible";
|
||||
} else {
|
||||
return "hidden";
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue