**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.cc
SkColor color = ParseHexColor(color_name);
  window_->SetBackgroundColor(color);
}
void TopLevelWindow::SetHasShadow(bool has_shadow) {
  window_->SetHasShadow(has_shadow);
}
bool TopLevelWindow::HasShadow() {
  return window_->HasShadow();
}
void TopLevelWindow::SetOpacity(const double opacity) {
  window_->SetOpacity(opacity);
}
double TopLevelWindow::GetOpacity() {
  return window_->GetOpacity();
}
void TopLevelWindow::SetShape(const std::vector<gfx::Rect>& rects) {
  window_->widget()->SetShape(std::make_unique<std::vector<gfx::Rect>>(rects));
}
void TopLevelWindow::SetRepresentedFilename(const std::string& filename) {
  window_->SetRepresentedFilename(filename);
}
std::string TopLevelWindow::GetRepresentedFilename() {
  return window_->GetRepresentedFilename();
}
void TopLevelWindow::SetDocumentEdited(bool edited) {
  window_->SetDocumentEdited(edited);
}
bool TopLevelWindow::IsDocumentEdited() {