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) { BrowserWindow.prototype.setTopBrowserView = function (browserView: BrowserView) {
if (browserView.ownerWindow !== this) { throw new Error('Given BrowserView is not attached to the window'); } 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; module.exports = BrowserWindow;

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

@ -520,6 +520,19 @@ describe('BrowserView module', () => {
win2.close(); win2.close();
win2.destroy(); 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()', () => { describe('BrowserView.webContents.getOwnerBrowserWindow()', () => {