在一个浮动Area,一个tabpage,两个Panel的场景下。拖拽面板标题栏应该等同于拖拽Area标题栏
This commit is contained in:
@@ -126,25 +126,23 @@ const dragOperationCache = new Map();
|
|||||||
*/
|
*/
|
||||||
const shouldOperateAreaInsteadOfPanel = (areaId) => {
|
const shouldOperateAreaInsteadOfPanel = (areaId) => {
|
||||||
try {
|
try {
|
||||||
// 简化逻辑:直接检查区域的面板数量
|
// 检查区域的子元素结构
|
||||||
// 遍历所有子元素,统计Panel数量
|
// 如果有一个TabPage和任意数量的Panel,返回true
|
||||||
let panelCount = 0;
|
|
||||||
|
|
||||||
const childrenArray = Array.isArray(area.children) ? area.children : [area.children];
|
const childrenArray = Array.isArray(area.children) ? area.children : [area.children];
|
||||||
|
|
||||||
for (const child of childrenArray) {
|
for (const child of childrenArray) {
|
||||||
if (child.type === 'TabPage' && child.children) {
|
if (child.type === 'TabPage' && child.children) {
|
||||||
const tabChildrenArray = Array.isArray(child.children) ? child.children : [child.children];
|
const tabChildrenArray = Array.isArray(child.children) ? child.children : [child.children];
|
||||||
for (const tabChild of tabChildrenArray) {
|
const panelCount = tabChildrenArray.filter(tabChild => tabChild.type === 'Panel').length;
|
||||||
if (tabChild.type === 'Panel') {
|
|
||||||
panelCount++;
|
// 如果TabPage有Panel,返回true
|
||||||
}
|
if (panelCount > 0) {
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 如果区域中只有一个面板,返回true
|
return false;
|
||||||
return panelCount === 1;
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -152,7 +150,7 @@ const shouldOperateAreaInsteadOfPanel = (areaId) => {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 检查是否应该操作区域而非面板(从GlobalEventManager.js迁移)
|
* 检查是否应该操作区域而非面板(从GlobalEventManager.js迁移)
|
||||||
* 当只有一个面板时,操作区域而不是面板
|
* 当有一个TabPage和任意数量的Panel时,操作区域而不是面板
|
||||||
* @param {Object} data - 事件数据
|
* @param {Object} data - 事件数据
|
||||||
* @returns {boolean} 是否应该操作区域
|
* @returns {boolean} 是否应该操作区域
|
||||||
*/
|
*/
|
||||||
@@ -162,15 +160,17 @@ const shouldOperateAreaInsteadOfPanelFromData = (data) => {
|
|||||||
// 从AreaHandler获取区域状态
|
// 从AreaHandler获取区域状态
|
||||||
const areaState = areaHandler.getAreaState(areaId);
|
const areaState = areaHandler.getAreaState(areaId);
|
||||||
|
|
||||||
// 检查区域是否只有一个面板
|
// 检查区域是否有一个TabPage和任意数量的Panel
|
||||||
let panelCount = 0;
|
|
||||||
if (areaState.children && areaState.children.type === 'TabPage') {
|
if (areaState.children && areaState.children.type === 'TabPage') {
|
||||||
const tabChildren = Array.isArray(areaState.children.children) ? areaState.children.children : [areaState.children.children];
|
const tabChildren = Array.isArray(areaState.children.children) ? areaState.children.children : [areaState.children.children];
|
||||||
panelCount = tabChildren.filter(child => child.type === 'Panel').length;
|
const panelCount = tabChildren.filter(child => child.type === 'Panel').length;
|
||||||
|
|
||||||
|
// 如果TabPage有Panel,返回true
|
||||||
|
return panelCount > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 如果区域中只有一个面板,返回true
|
// 默认不是
|
||||||
return panelCount === 1;
|
return false;
|
||||||
};
|
};
|
||||||
|
|
||||||
const onCloseFloatingArea = (event) => {
|
const onCloseFloatingArea = (event) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user