From ed5b10cbf17e171c39a8f53a3ee6b55a97360fd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=97=E7=86=A0?= Date: Thu, 21 Oct 2021 15:32:15 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=A4=9Atab=20panel=E5=88=87=E6=8D=A2?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/editor-skeleton/src/skeleton.ts | 4 ++-- packages/editor-skeleton/src/widget/panel.ts | 18 +++++++++++++++--- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/packages/editor-skeleton/src/skeleton.ts b/packages/editor-skeleton/src/skeleton.ts index 9c32b9e1b..97f202236 100644 --- a/packages/editor-skeleton/src/skeleton.ts +++ b/packages/editor-skeleton/src/skeleton.ts @@ -172,8 +172,8 @@ export class Skeleton { const isInFloatAreaPreferenceExists = this.editor?.getPreference()?.contains(panelNameKey, 'skeleton'); if (isInFloatAreaPreferenceExists) { const isInFloatAreaFromPreference = this.editor?.getPreference()?.get(panelNameKey, 'skeleton'); - const currentIsInFloatArea = panel?.isInFloatArea(); - if (isInFloatAreaFromPreference !== currentIsInFloatArea) { + const isCurrentInFloatArea = panel?.isChildOfFloatArea(); + if (isInFloatAreaFromPreference !== isCurrentInFloatArea) { this.toggleFloatStatus(panel); } } diff --git a/packages/editor-skeleton/src/widget/panel.ts b/packages/editor-skeleton/src/widget/panel.ts index dfbe6af7c..249c3688c 100644 --- a/packages/editor-skeleton/src/widget/panel.ts +++ b/packages/editor-skeleton/src/widget/panel.ts @@ -154,25 +154,37 @@ export default class Panel implements IWidget { getContent() { return this.content; } + /** * check is current panel is in float area or not * * @returns {boolean} * @memberof Panel */ - isInFloatArea(): boolean { + isChildOfFloatArea(): boolean { return this.parent?.name === 'leftFloatArea'; } + /** + * check is current panel is in fixed area or not + * + * @returns {boolean} + * @memberof Panel + */ + isChildOfFixedArea(): boolean { + return this.parent?.name === 'leftFixedArea'; + } + setActive(flag: boolean) { if (flag === this._actived) { // TODO: 如果移动到另外一个 container,会有问题 return; } if (flag) { - if (this.isInFloatArea()) { + // 对于 Area 的直接 Child,要专门处理 Float & Fixed 分组切换, 其他情况不需要 + if (this.isChildOfFloatArea()) { this.skeleton.leftFixedArea.container.unactiveAll(); - } else { + } else if (this.isChildOfFixedArea()) { this.skeleton.leftFloatArea.container.unactiveAll(); } this._actived = true;