**Electron Version:** v3.0.x
**OS:** Windows 10 (1803) x64
**Last known working Electron version:** v2.0.x

**Expected Behavior**
Minimizing the main window while child window is focused should minimize the main window and do nothing else.

**Actual behavior**
Minimizing the main window while a child window is focused changes focus to main window and brings the main window back up. Electron also tries to change the focus back to the child window afterwards and either fails to do so (Windows 10 focus bug?) or starts to constantly change the focus back and forth between the child and main window. The latter is happening with a singleInstance lock (happens with both the new and old syntax).

**To Reproduce**
Open Electron twice. Focus child (2.) window and minimize the main (1.) window.
Cannot reproduce on Linux. Works fine in v2.0.x.

**Additional Information**
App example for singleInstance lock. Opening the App a second time creates a new window without creating a second instance. Reproducing this way constantly changes the focus back and forth between the two windows.
```
const {app, BrowserWindow} = require('electron')
const path = require('path')

app.on('second-instance', (commandLine, workingDirectory) => {
let child = new BrowserWindow({
    width: 1280,
    height: 800,
	title: "Child Window",
	show: false,
	autoHideMenuBar: true,
    webPreferences: {plugins: true, sandbox: true}})
child.loadURL(`file://${__dirname}/index.html`);
child.once('ready-to-show', () => {child.show()})
child.on('page-title-updated', (e) => {e.preventDefault()})
child.on('closed', () => {child = null})
child.webContents.on('new-window', (event, url, frameName, disposition, options) => {
event.defaultPrevented = true;})})
if (!app.requestSingleInstanceLock()) {return app.quit()}

if(process.platform != 'linux') {app.enableMixedSandbox()}

app.on('ready', () => {
  let win = new BrowserWindow({
    width: 1280,
    height: 800,
	title: "Main Window",
	show: false,
	autoHideMenuBar: true,
    webPreferences: {plugins: true, sandbox: true}
})

win.on('page-title-updated', (e) => {e.preventDefault()})
win.loadURL(`file://${__dirname}/index.html`);
win.once('ready-to-show', () => {win.show();win.maximize()})
win.on('closed', () => {win = null; app.quit()})

})
```

atom/browser/api/atom_api_top_level_window.h
void SetMinimumSize(int width, int height);
  std::vector<int> GetMinimumSize();
  void SetMaximumSize(int width, int height);
  std::vector<int> GetMaximumSize();
  void SetSheetOffset(double offsetY, mate::Arguments* args);
  void SetResizable(bool resizable);
  bool IsResizable();
  void SetMovable(bool movable);
#if defined(OS_WIN) || defined(OS_MACOSX)
  void MoveTop();
#endif
  bool IsMovable();
  void SetMinimizable(bool minimizable);
  bool IsMinimizable();
  void SetMaximizable(bool maximizable);
  bool IsMaximizable();
  void SetFullScreenable(bool fullscreenable);
  bool IsFullScreenable();
  void SetClosable(bool closable);
  bool IsClosable();
  void SetAlwaysOnTop(bool top, mate::Arguments* args);
  bool IsAlwaysOnTop();
  void Center();
  void SetPosition(int x, int y, mate::Arguments* args);
  std::vector<int> GetPosition();
  void SetTitle(const std::string& title);
  std::string GetTitle();
  void FlashFrame(bool flash);
  void SetSkipTaskbar(bool skip);
  void SetSimpleFullScreen(bool simple_fullscreen);