Add win.setModal(modal) API
authorCheng Zhao <zcbenz@gmail.com>
Fri, 17 Jun 2016 08:49:35 +0000 (17:49 +0900)
committerCheng Zhao <zcbenz@gmail.com>
Mon, 20 Jun 2016 02:16:41 +0000 (11:16 +0900)
lib/browser/api/browser-window.js

index 0847649..2a85a7c 100644 (file)
@@ -97,6 +97,23 @@ BrowserWindow.prototype._init = function () {
   })
 }
 
+BrowserWindow.prototype.setModal = function (modal) {
+  const parent = this.getParentWindow()
+  if (!parent) {
+    throw new Error('setModal can only be called for child window')
+  }
+
+  let closeListener = () => parent.enable()
+  if (modal) {
+    parent.disable()
+    this.once('closed', closeListener)
+    this.show()
+  } else {
+    parent.enable()
+    this.removeListener('closed', closeListener)
+  }
+}
+
 BrowserWindow.getFocusedWindow = () => {
   for (let window of BrowserWindow.getAllWindows()) {
     if (window.isFocused()) return window
@@ -117,7 +134,6 @@ BrowserWindow.fromDevToolsWebContents = (webContents) => {
 }
 
 // Helpers.
-
 Object.assign(BrowserWindow.prototype, {
   loadURL (...args) {
     return this.webContents.loadURL.apply(this.webContents, args)