Merge pull request #1997 from deepak1556/api_app_patch

app: adding focus/blur events
This commit is contained in:
Cheng Zhao 2015-06-18 15:55:59 +08:00
commit 2cb1aa6639
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()