Merge pull request #586 from mathuo/585-add-panel-event-unintentially-called-when-adding-floating-panel

bug: prevent unintential add_panel event
This commit is contained in:
mathuo 2024-04-25 23:12:29 +01:00 committed by GitHub
commit 2a3f623c30
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 55 additions and 1 deletions

View File

@ -5279,4 +5279,56 @@ describe('dockviewComponent', () => {
expect(api.activePanel).toBe(panel1); expect(api.activePanel).toBe(panel1);
}); });
}); });
describe('events flow', () => {
test('that floating a panel should not call an additional addPanel event', () => {
const container = document.createElement('div');
const dockview = new DockviewComponent({
parentElement: container,
createComponent(options) {
switch (options.name) {
case 'default':
return new PanelContentPartTest(
options.id,
options.name
);
default:
throw new Error(`unsupported`);
}
},
});
const api = new DockviewApi(dockview);
dockview.layout(1000, 1000);
let addPanelCount = 0;
let addGroupCount = 0;
api.onDidAddPanel((event) => {
addPanelCount++;
});
api.onDidAddGroup((event) => {
addGroupCount++;
});
api.addPanel({
id: 'panel_1',
component: 'default',
});
const panel2 = api.addPanel({
id: 'panel_2',
component: 'default',
position: { referencePanel: 'panel_1' },
});
expect(addPanelCount).toBe(2);
expect(addGroupCount).toBe(1);
api.addFloatingGroup(panel2);
expect(addPanelCount).toBe(2);
expect(addGroupCount).toBe(2);
});
});
}); });

View File

@ -857,7 +857,9 @@ export class DockviewComponent
}) })
); );
group.model.openPanel(item, { skipSetGroupActive: true }); this.movingLock(() =>
group.model.openPanel(item, { skipSetGroupActive: true })
);
} else { } else {
group = item; group = item;