diff --git a/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java b/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java index 2b43265f9a..24ed004fff 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java @@ -1248,7 +1248,7 @@ public class FormDesigner extends TargetComponent
implements TreeSelection * @param currentDragEvent */ public void startDraggingNewWidget(XCreator xCreator, MouseEvent startDragEvent, MouseEvent currentDragEvent) { - if (currentDragEvent == null || this.getDropTarget() != null) { + if (currentDragEvent == null) { return; } @@ -1270,7 +1270,7 @@ public class FormDesigner extends TargetComponent implements TreeSelection * @param currentDragEvent */ public void startDraggingFormWidget(XCreator xCreator, MouseEvent startDragEvent, MouseEvent currentDragEvent) { - if (currentDragEvent == null || this.getDropTarget() != null) { + if (currentDragEvent == null) { return; } backUpCreator(xCreator); @@ -1318,7 +1318,14 @@ public class FormDesigner extends TargetComponent implements TreeSelection DraggingModel model = this.draggingModel; MouseEvent dragEvent = model.getCurrentDragEvent(); XCreator hotspot = this.getComponentAt(dragEvent.getX(), dragEvent.getY()); - return XCreatorUtils.getHotspotContainer(hotspot); + XLayoutContainer container = XCreatorUtils.getHotspotContainer(hotspot); + XLayoutContainer topLayout = container.getTopLayout(); + // REPORT-66939 Tab比较特殊,它是又多个LayoutContainer组成,直接返回container会导致误判,需要先找到最上层topLayout,取其父layout才是正确结果 + if (topLayout != null && container != topLayout) { + return (XLayoutContainer) topLayout.getParent(); + } else { + return container; + } } /**