app: adding browser-window-focus/blur events

This commit is contained in:
deepak1556 2015-06-18 11:29:08 +05:30
parent ad59393641
commit 2f36f5ca78
3 changed files with 40 additions and 1 deletions

View file

@ -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

View file

@ -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

View file

@ -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()