fix: setTopBrowserView focus issue with reordering (#42653)

* fix: reorder top browser view instead of adding/removing

* fix: update browserViews order

* test: add a test for setTopBrowserView
This commit is contained in:
Alice Zhao 2024-07-01 02:36:04 -07:00 коммит произвёл GitHub
Родитель efff369639
Коммит e9a93a8c5c
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: B5690EEEBB952194
2 изменённых файлов: 19 добавлений и 1 удалений

Просмотреть файл

@ -232,7 +232,12 @@ BrowserWindow.prototype.getBrowserViews = function () {
BrowserWindow.prototype.setTopBrowserView = function (browserView: BrowserView) {
if (browserView.ownerWindow !== this) { throw new Error('Given BrowserView is not attached to the window'); }
this.addBrowserView(browserView);
const idx = this._browserViews.indexOf(browserView);
if (idx >= 0) {
this.contentView.addChildView(browserView.webContentsView);
this._browserViews.splice(idx, 1);
this._browserViews.push(browserView);
}
};
module.exports = BrowserWindow;

Просмотреть файл

@ -520,6 +520,19 @@ describe('BrowserView module', () => {
win2.close();
win2.destroy();
});
it('should reorder the BrowserView to the top if it is already in the window', () => {
view = new BrowserView();
const view2 = new BrowserView();
defer(() => view2.webContents.destroy());
w.addBrowserView(view);
w.addBrowserView(view2);
defer(() => w.removeBrowserView(view2));
w.setTopBrowserView(view);
const views = w.getBrowserViews();
expect(views.indexOf(view)).to.equal(views.length - 1);
});
});
describe('BrowserView.webContents.getOwnerBrowserWindow()', () => {