提交 4163ea20 编写于 作者: J Joao Moreno

fixes #78228

上级 bdd162c5
......@@ -549,11 +549,11 @@ class LeafNode implements ISplitView, IDisposable {
}
}
setVisible(visible: boolean): void {
setVisible(visible: boolean, cachedVisibleSize?: number): void {
if (visible) {
this._cachedVisibleSize = undefined;
} else {
this._cachedVisibleSize = this._size;
this._cachedVisibleSize = typeof cachedVisibleSize === 'number' ? cachedVisibleSize : this._size;
}
if (this.view.setVisible) {
......
......@@ -49,7 +49,7 @@ export interface IView {
readonly priority?: LayoutPriority;
readonly snap?: boolean;
layout(size: number, orientation: Orientation): void;
setVisible?(visible: boolean): void;
setVisible?(visible: boolean, cachedVisibleSize?: number): void;
}
interface ISashEvent {
......@@ -79,7 +79,7 @@ abstract class ViewItem {
return typeof this._cachedVisibleSize === 'undefined';
}
set visible(visible: boolean) {
setVisible(visible: boolean, size?: number): void {
if (visible === this.visible) {
return;
}
......@@ -88,14 +88,14 @@ abstract class ViewItem {
this.size = clamp(this._cachedVisibleSize!, this.viewMinimumSize, this.viewMaximumSize);
this._cachedVisibleSize = undefined;
} else {
this._cachedVisibleSize = this.size;
this._cachedVisibleSize = typeof size === 'number' ? size : this.size;
this.size = 0;
}
dom.toggleClass(this.container, 'visible', visible);
if (this.view.setVisible) {
this.view.setVisible(visible);
this.view.setVisible(visible, this._cachedVisibleSize);
}
}
......@@ -161,6 +161,7 @@ interface ISashItem {
interface ISashDragSnapState {
readonly index: number;
readonly limitDelta: number;
readonly size: number;
}
interface ISashDragState {
......@@ -453,7 +454,7 @@ export class SplitView extends Disposable {
}
const viewItem = this.viewItems[index];
viewItem.visible = visible;
viewItem.setVisible(visible);
this.distributeEmptySpace(index);
this.layoutViews();
......@@ -552,7 +553,8 @@ export class SplitView extends Disposable {
snapBefore = {
index: snapBeforeIndex,
limitDelta: viewItem.visible ? minDelta - halfSize : minDelta + halfSize
limitDelta: viewItem.visible ? minDelta - halfSize : minDelta + halfSize,
size: viewItem.size
};
}
......@@ -562,7 +564,8 @@ export class SplitView extends Disposable {
snapAfter = {
index: snapAfterIndex,
limitDelta: viewItem.visible ? maxDelta + halfSize : maxDelta - halfSize
limitDelta: viewItem.visible ? maxDelta + halfSize : maxDelta - halfSize,
size: viewItem.size
};
}
}
......@@ -740,14 +743,14 @@ export class SplitView extends Disposable {
const snapView = this.viewItems[snapBefore.index];
const visible = delta >= snapBefore.limitDelta;
snapped = visible !== snapView.visible;
snapView.visible = visible;
snapView.setVisible(visible, snapBefore.size);
}
if (!snapped && snapAfter) {
const snapView = this.viewItems[snapAfter.index];
const visible = delta < snapAfter.limitDelta;
snapped = visible !== snapView.visible;
snapView.visible = visible;
snapView.setVisible(visible, snapAfter.size);
}
if (snapped) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册