From 1340b174242c82197d6435b71204b5438db9a11d Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Tue, 17 Apr 2018 16:53:55 +0900 Subject: [PATCH] Do not return TopLevelWindow in BrowserWindow.getAllWindows --- atom/browser/api/atom_api_browser_window.cc | 8 +------- lib/browser/api/browser-window.js | 13 +++++++++++++ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/atom/browser/api/atom_api_browser_window.cc b/atom/browser/api/atom_api_browser_window.cc index b82c05097028..bb8247ec963c 100644 --- a/atom/browser/api/atom_api_browser_window.cc +++ b/atom/browser/api/atom_api_browser_window.cc @@ -438,14 +438,8 @@ void Initialize(v8::Local exports, templ->InstanceTemplate()->SetInternalFieldCount(1); BrowserWindow::BuildPrototype(isolate, templ); - mate::Dictionary browser_window(isolate, templ->GetFunction()); - browser_window.SetMethod( - "fromId", &mate::TrackableObject::FromWeakMapID); - browser_window.SetMethod("getAllWindows", - &mate::TrackableObject::GetAll); - mate::Dictionary dict(isolate, exports); - dict.Set("BrowserWindow", browser_window); + dict.Set("BrowserWindow", templ->GetFunction()); } } // namespace diff --git a/lib/browser/api/browser-window.js b/lib/browser/api/browser-window.js index cbf5ab857c03..924a99c4bebb 100644 --- a/lib/browser/api/browser-window.js +++ b/lib/browser/api/browser-window.js @@ -128,6 +128,19 @@ BrowserWindow.prototype._init = function () { }) } +const isBrowserWindow = (win) => { + return win && win.constructor.name === 'BrowserWindow' +} + +BrowserWindow.fromId = (id) => { + const win = TopLevelWindow.fromId(id) + return isBrowserWindow(win) ? win : null +} + +BrowserWindow.getAllWindows = () => { + return TopLevelWindow.getAllWindows().filter(isBrowserWindow) +} + BrowserWindow.getFocusedWindow = () => { for (let window of BrowserWindow.getAllWindows()) { if (window.isFocused() || window.isDevToolsFocused()) return window