diff --git a/packages/dockview-core/src/api/dockviewGroupPanelApi.ts b/packages/dockview-core/src/api/dockviewGroupPanelApi.ts index 347b09660..da9fb01f8 100644 --- a/packages/dockview-core/src/api/dockviewGroupPanelApi.ts +++ b/packages/dockview-core/src/api/dockviewGroupPanelApi.ts @@ -61,6 +61,7 @@ export class DockviewGroupPanelApiImpl extends GridviewPanelApiImpl { options.group ?? this.accessor.addGroup({ direction: positionToDirection(options.position ?? 'right'), + skipSetActive: true, }); this.accessor.moveGroupOrPanel({ diff --git a/packages/dockview-core/src/dockview/dockviewComponent.ts b/packages/dockview-core/src/dockview/dockviewComponent.ts index ac24f2001..55f9113a1 100644 --- a/packages/dockview-core/src/dockview/dockviewComponent.ts +++ b/packages/dockview-core/src/dockview/dockviewComponent.ts @@ -795,15 +795,17 @@ export class DockviewComponent skipPopoutAssociated: true, }); } else { - const removedGroup = this.doRemoveGroup(group, { - skipDispose: true, - skipActive: true, - }); - removedGroup.model.renderContainer = - this.overlayRenderContainer; - removedGroup.model.location = { type: 'grid' }; - this.doAddGroup(removedGroup, [0]); - this.doSetGroupAndPanelActive(removedGroup); + if (this.getPanel(group.id)) { + const removedGroup = this.doRemoveGroup(group, { + skipDispose: true, + skipActive: true, + }); + removedGroup.model.renderContainer = + this.overlayRenderContainer; + removedGroup.model.location = { type: 'grid' }; + this.doAddGroup(removedGroup, [0]); + this.doSetGroupAndPanelActive(removedGroup); + } } }) ); @@ -1594,7 +1596,9 @@ export class DockviewComponent const group = this.orthogonalize( directionToPosition(options.direction) ); - this.doSetGroupAndPanelActive(group); + if (!options.skipSetActive) { + this.doSetGroupAndPanelActive(group); + } return group; } @@ -1607,7 +1611,9 @@ export class DockviewComponent target ); this.doAddGroup(group, relativeLocation); - this.doSetGroupAndPanelActive(group); + if (!options.skipSetActive) { + this.doSetGroupAndPanelActive(group); + } return group; } else { this.doAddGroup(group); @@ -1922,11 +1928,13 @@ export class DockviewComponent for (const panel of panels) { to.model.openPanel(panel, { skipSetActive: panel !== activePanel, - skipSetGroupActive: panel !== activePanel, + skipSetGroupActive: true, }); } }); + this.doSetGroupAndPanelActive(to); + panels.forEach((panel) => { this._onDidMovePanel.fire({ panel }); }); diff --git a/packages/dockview-core/src/dockview/dockviewGroupPanelModel.ts b/packages/dockview-core/src/dockview/dockviewGroupPanelModel.ts index 951c9e983..770e89087 100644 --- a/packages/dockview-core/src/dockview/dockviewGroupPanelModel.ts +++ b/packages/dockview-core/src/dockview/dockviewGroupPanelModel.ts @@ -38,6 +38,7 @@ interface GroupMoveEvent { interface CoreGroupOptions { locked?: DockviewGroupPanelLocked; hideHeader?: boolean; + skipSetActive?: boolean; } export interface GroupOptions extends CoreGroupOptions {