From 2f36f5ca78a505d59c62f1ce6b73c3c64688450c Mon Sep 17 00:00:00 2001 From: deepak1556 Date: Thu, 18 Jun 2015 11:29:08 +0530 Subject: [PATCH] app: adding browser-window-focus/blur events --- atom/browser/api/lib/browser-window.coffee | 8 +++++++- docs/api/app.md | 14 ++++++++++++++ spec/api-app-spec.coffee | 19 +++++++++++++++++++ 3 files changed, 40 insertions(+), 1 deletion(-) diff --git a/atom/browser/api/lib/browser-window.coffee b/atom/browser/api/lib/browser-window.coffee index 818d737a894f..fc4667aa2c89 100644 --- a/atom/browser/api/lib/browser-window.coffee +++ b/atom/browser/api/lib/browser-window.coffee @@ -30,6 +30,12 @@ BrowserWindow::_init = -> @on '-will-navigate', (event, url) => @webContents.emit 'will-navigate', event, url + # Redirect focus/blur event to app instance too. + @on 'blur', (event) => + app.emit 'browser-window-blur', event, this + @on 'focus', (event) => + app.emit 'browser-window-focus', event, this + # Remove the window from weak map immediately when it's destroyed, since we # could be iterating windows before GC happened. @once 'closed', => @@ -58,7 +64,7 @@ BrowserWindow.fromDevToolsWebContents = (webContents) -> return window for window in windows when window.devToolsWebContents?.equal webContents BrowserWindow.fromId = (id) -> - BrowserWindow.windows.get id + BrowserWindow.windows.get id if BrowserWindow.windows.has id # Helpers. BrowserWindow::loadUrl = -> @webContents.loadUrl.apply @webContents, arguments diff --git a/docs/api/app.md b/docs/api/app.md index d30c8c39c8a8..1564196ce810 100644 --- a/docs/api/app.md +++ b/docs/api/app.md @@ -87,6 +87,20 @@ Emitted when the application is activated while there is no opened windows. It usually happens when user has closed all of application's windows and then click on the application's dock icon. +## Event: browser-window-blur + +* `event` Event +* `window` BrowserWindow + +Emitted when a [browserWindow](browser-window.md) gets blurred. + +## Event: browser-window-focus + +* `event` Event +* `window` BrowserWindow + +Emitted when a [browserWindow](browser-window.md) gets focused. + ## app.quit() Try to close all windows. The `before-quit` event will first be emitted. If all diff --git a/spec/api-app-spec.coffee b/spec/api-app-spec.coffee index 4e6bda2ac1fe..44de38927454 100644 --- a/spec/api-app-spec.coffee +++ b/spec/api-app-spec.coffee @@ -1,5 +1,7 @@ assert = require 'assert' app = require('remote').require 'app' +remote = require 'remote' +BrowserWindow = remote.require 'browser-window' describe 'app module', -> describe 'app.getVersion()', -> @@ -23,3 +25,20 @@ describe 'app module', -> app.setName 'test-name' assert.equal app.getName(), 'test-name' app.setName 'Electron Test' + + describe 'focus/blur event', -> + w = null + beforeEach -> + w.destroy() if w? + w = new BrowserWindow(show: false, width: 400, height: 400) + afterEach -> + w.destroy() if w? + w = null + it 'should emit focus event', (done) -> + app.once 'browser-window-blur', (e, window) -> + assert.equal w.id, window.id + done() + app.once 'browser-window-focus', (e, window) -> + assert.equal w.id, window.id + w.hide() + w.show()