On MacOS (Windows/Linux work fine) I am opening a modal window. The modal window opens up fine but focus behavior is broken. When I click on the main window (outside of modal) it gains the focus (which should not happen) and then the modal window gains focus (which is correct), but right after that the modal gains blur (which is wrong). Now if I try to focus the modal with mouse it does not do anything as the main window is focused. 

Here I have created a demo which prints out to console which window is focused. 
[https://github.com/zarubond/electron-quick-start/tree/modal_focus](https://github.com/zarubond/electron-quick-start/tree/modal_focus)


### Preflight Checklist
* [x] I have read the [Contributing Guidelines](https://github.com/electron/electron/blob/master/CONTRIBUTING.md) for this project.
* [x] I agree to follow the [Code of Conduct](https://github.com/electron/electron/blob/master/CODE_OF_CONDUCT.md) that this project adheres to.
* [x] I have searched the issue tracker for an issue that matches the one I want to file, without success.

### Issue Details

* **Electron Version:**
Tested on Electron 3, 5, 6-beta4
* **Operating System:**
MacOS 10.13 (Windows 10 and Ubuntu 18.04 work fine)
* **Last Known Working Electron version:**
None

### Expected Behavior
Main window should never get focused if the modal window is opened

### Actual Behavior
Main window gains focused event if the modal window is opened.

### To Reproduce
Open up the console to see which windows are getting focused and the open the modal with open button.

[https://github.com/zarubond/electron-quick-start/tree/modal_focus](https://github.com/zarubond/electron-quick-start/tree/modal_focus)

### Screenshots
![image](https://user-images.githubusercontent.com/6961047/58539950-b3cdeb00-81f8-11e9-8678-da33f1b09b46.png)
(ignore the last line, I had to switch to screen-short program)

shell/browser/native_window.cc
for (NativeWindowObserver& observer : observers_)
    observer.OnWindowAlwaysOnTopChanged();
}
void NativeWindow::NotifyWindowExecuteAppCommand(const std::string& command) {
  for (NativeWindowObserver& observer : observers_)
    observer.OnExecuteAppCommand(command);
}
void NativeWindow::NotifyTouchBarItemInteraction(
    const std::string& item_id,
    const base::DictionaryValue& details) {
  for (NativeWindowObserver& observer : observers_)
    observer.OnTouchBarItemResult(item_id, details);
}
void NativeWindow::NotifyNewWindowForTab() {
  for (NativeWindowObserver& observer : observers_)
    observer.OnNewWindowForTab();
}
#if defined(OS_WIN)
void NativeWindow::NotifyWindowMessage(UINT message,
                                       WPARAM w_param,
                                       LPARAM l_param) {
  for (NativeWindowObserver& observer : observers_)
    observer.OnWindowMessage(message, w_param, l_param);
}
#endif
views::Widget* NativeWindow::GetWidget() {
  return widget();
}
const views::Widget* NativeWindow::GetWidget() const {