macOS: Use sheet window as modal window

This commit is contained in:
Cheng Zhao 2016-06-20 14:49:24 +09:00
parent 1866dbe608
commit e33e4be257
8 changed files with 81 additions and 112 deletions

View file

@ -902,10 +902,18 @@ describe('browser-window module', function () {
})
})
describe('win.setModal(modal)', function () {
describe('modal option', function () {
// The isEnabled API is not reliable on macOS.
if (process.platform === 'darwin') return
beforeEach(function () {
if (c != null) c.destroy()
c = new BrowserWindow({show: false, parent: w, modal: true})
})
it('disables parent window', function () {
assert.equal(w.isEnabled(), true)
c.setModal(true)
c.show()
assert.equal(w.isEnabled(), false)
})
@ -914,38 +922,20 @@ describe('browser-window module', function () {
assert.equal(w.isEnabled(), true)
done()
})
c.setModal(true)
c.show()
c.close()
})
it('enables parent window when setting not modal', function () {
assert.equal(w.isEnabled(), true)
c.setModal(true)
assert.equal(w.isEnabled(), false)
c.setModal(false)
assert.equal(w.isEnabled(), true)
})
it('enables parent window when removing parent', function () {
if (process.platform !== 'darwin') return
assert.equal(w.isEnabled(), true)
c.setModal(true)
assert.equal(w.isEnabled(), false)
c.setParentWindow(null)
assert.equal(w.isEnabled(), true)
})
it('disables parent window recursively', function () {
let c2 = new BrowserWindow({show: false, parent: w})
c.setModal(true)
c2.setModal(true)
let c2 = new BrowserWindow({show: false, parent: w, modal: true})
c.show()
assert.equal(w.isEnabled(), false)
c.setModal(false)
c2.show()
assert.equal(w.isEnabled(), false)
c.destroy()
assert.equal(w.isEnabled(), false)
c2.setModal(false)
assert.equal(w.isEnabled(), true)
c2.destroy()
assert.equal(w.isEnabled(), true)
})
})
})