fixed #8028 - ghost panes and missing pane drag handle

This commit is contained in:
Eugene Pankov 2023-03-18 20:01:28 +01:00
parent ceb9b3cca8
commit ef3c9e3be0
No known key found for this signature in database
GPG Key ID: 5896FCBBDD1CF4F4
4 changed files with 20 additions and 5 deletions

View File

@ -192,6 +192,14 @@ export abstract class BaseTabComponent extends BaseComponent {
this.viewContainer = undefined this.viewContainer = undefined
} }
get topmostParent (): BaseTabComponent|null {
let parent = this.parent
while (parent?.parent) {
parent = parent.parent
}
return parent
}
/** /**
* Called before the tab is closed * Called before the tab is closed
*/ */

View File

@ -458,12 +458,18 @@ export class SplitTabComponent extends BaseTabComponent implements AfterViewInit
tab.destroy() tab.destroy()
} }
let allTabs: BaseTabComponent[] = []
if (thing instanceof BaseTabComponent) { if (thing instanceof BaseTabComponent) {
if (thing.parent instanceof SplitTabComponent) { allTabs = [thing]
thing.parent.removeTab(thing) } else if (thing instanceof SplitContainer) {
allTabs = thing.getAllTabs()
} }
thing.removeFromContainer() for (const tab of allTabs) {
thing.parent = this if (tab.parent instanceof SplitTabComponent) {
tab.parent.removeTab(tab)
}
tab.removeFromContainer()
tab.parent = this
} }
let target = relative ? this.getParentOf(relative) : null let target = relative ? this.getParentOf(relative) : null

View File

@ -2,6 +2,7 @@
padding: 5px 15px 5px 15px; padding: 5px 15px 5px 15px;
display: flex; display: flex;
z-index: 3; z-index: 3;
overflow: hidden;
::ng-deep .btn { ::ng-deep .btn {
white-space: nowrap; white-space: nowrap;

View File

@ -29,7 +29,7 @@ export class TerminalToolbarComponent {
} }
get shouldShowDragHandle (): boolean { get shouldShowDragHandle (): boolean {
return this.tab.parent instanceof SplitTabComponent && this.tab.parent.getAllTabs().length > 1 return this.tab.topmostParent instanceof SplitTabComponent && this.tab.topmostParent.getAllTabs().length > 1
} }
@HostListener('mouseenter') onMouseEnter () { @HostListener('mouseenter') onMouseEnter () {