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
}
get topmostParent (): BaseTabComponent|null {
let parent = this.parent
while (parent?.parent) {
parent = parent.parent
}
return parent
}
/**
* Called before the tab is closed
*/

View File

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

View File

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

View File

@ -29,7 +29,7 @@ export class TerminalToolbarComponent {
}
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 () {