<!--
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
#include "atom/browser/api/atom_api_window.h"
#include "atom/browser/api/atom_api_browser_view.h"
#include "atom/browser/api/atom_api_menu.h"
#include "atom/browser/api/atom_api_web_contents.h"
#include "atom/browser/browser.h"
#include "atom/browser/native_window.h"
#include "atom/browser/web_contents_preferences.h"
#include "atom/common/native_mate_converters/callback.h"
#include "atom/common/native_mate_converters/file_path_converter.h"
#include "atom/common/native_mate_converters/gfx_converter.h"
#include "atom/common/native_mate_converters/gurl_converter.h"
#include "atom/common/native_mate_converters/image_converter.h"
#include "atom/common/native_mate_converters/string16_converter.h"
#include "atom/common/native_mate_converters/value_converter.h"
#include "atom/common/options_switches.h"
#include "base/command_line.h"
#include "base/threading/thread_task_runner_handle.h"
#include "content/public/browser/render_process_host.h"
#include "content/public/common/content_switches.h"
#include "native_mate/constructor.h"
#include "native_mate/dictionary.h"