<!--
Thanks for opening an issue! A few things to keep in mind:

- The issue tracker is only for bugs and feature requests.
- Before reporting a bug, please try reproducing your issue against
  the latest version of Electron.
- If you need general advice, join our Slack: http://atom-slack.herokuapp.com
-->

* Electron version: 1.4.12
* Operating system: Windows 7

### Expected behavior

When a modal window is shown in a lazy manner, allow a manual (by code) disabling of parent window.

Suggestions:
- add option like `{..., disableParentImmediately: true, ...}`
- provide an API interface to the function [NativeWindowViews::SetEnabled(bool enable)](https://github.com/electron/electron/blob/master/atom/browser/native_window_views.cc#L987)

### Actual behavior

Actually is the parent window disabled only at the very moment of showing the modal window. The time between `new BrowserWindow(...)` and Event: 'ready-to-show' takes quite long time (cca 500ms) during which an user can take an action.

I created a topic on the atom discussion:
https://discuss.atom.io/t/modal-window-with-postponed-show-allows-interaction-with-a-parent-window/38094

In the end I had looked into the framework source code and I found that enabling/disabling of the window is a private feature of the atom in [NativeWindowViews::SetEnabled(bool enable)](https://github.com/electron/electron/blob/master/atom/browser/native_window_views.cc#L987) implementation, particularly in NativeWindowViews::Show(), NativeWindowViews::Hide(), NativeWindowViews::DeleteDelegate().

### How to reproduce

Create a window modal window, rendered from url and ensure that it is showed in a lazy manner and it takes at least a few ms. Maybe use some delay during the Event: 'ready-to-show' to ensure that. User will be able to click the parent.

Example of modal window lazy opening:
```
function openWarningWindow(parent: string) {
    let winWarn = new BrowserWindow({ width: 400, height: 160, modal: true, parent: global[parent], title: "Warning", show: false, maximizable: false, minimizable: false, frame: false, resizable: false, thickFrame: true });
    winWarn.setMenu(null);
    winWarn.loadURL(`${urlPrefix}/renderer.process.html?warning-window.view`);
    winWarn.once("ready-to-show", () => {
        winWarn.show();
    });
}
```

Thank you guys.
atom/browser/api/atom_api_window.cc
.SetMethod("isFocused", &Window::IsFocused)
      .SetMethod("show", &Window::Show)
      .SetMethod("showInactive", &Window::ShowInactive)
      .SetMethod("hide", &Window::Hide)
      .SetMethod("isVisible", &Window::IsVisible)
      .SetMethod("isEnabled", &Window::IsEnabled)
      .SetMethod("maximize", &Window::Maximize)
      .SetMethod("unmaximize", &Window::Unmaximize)
      .SetMethod("isMaximized", &Window::IsMaximized)
      .SetMethod("minimize", &Window::Minimize)
      .SetMethod("restore", &Window::Restore)
      .SetMethod("isMinimized", &Window::IsMinimized)
      .SetMethod("setFullScreen", &Window::SetFullScreen)
      .SetMethod("isFullScreen", &Window::IsFullscreen)
      .SetMethod("setAspectRatio", &Window::SetAspectRatio)
      .SetMethod("previewFile", &Window::PreviewFile)
      .SetMethod("closeFilePreview", &Window::CloseFilePreview)
#if !defined(OS_WIN)
      .SetMethod("setParentWindow", &Window::SetParentWindow)
#endif
      .SetMethod("getParentWindow", &Window::GetParentWindow)
      .SetMethod("getChildWindows", &Window::GetChildWindows)
      .SetMethod("getBrowserView", &Window::GetBrowserView)
      .SetMethod("setBrowserView", &Window::SetBrowserView)
      .SetMethod("isModal", &Window::IsModal)
      .SetMethod("getNativeWindowHandle", &Window::GetNativeWindowHandle)
      .SetMethod("getBounds", &Window::GetBounds)
      .SetMethod("setBounds", &Window::SetBounds)
      .SetMethod("getSize", &Window::GetSize)
      .SetMethod("setSize", &Window::SetSize)