diff --git a/designer-form/src/main/java/com/fr/design/designer/beans/models/SelectionModel.java b/designer-form/src/main/java/com/fr/design/designer/beans/models/SelectionModel.java index ceb559a2e..bf1c84990 100644 --- a/designer-form/src/main/java/com/fr/design/designer/beans/models/SelectionModel.java +++ b/designer-form/src/main/java/com/fr/design/designer/beans/models/SelectionModel.java @@ -84,9 +84,14 @@ public class SelectionModel { XCreator comp = designer.getComponentAt(e); if (e.getButton() == MouseEvent.BUTTON3 || (!InputEventBaseOnOS.isControlDown(e) && !e.isShiftDown())) { // 如果Ctrl或者Shift键盘没有按下,则清除已经选择的组件 - if (!StringUtils.equals(selection.getSelectedCreator().toData().getWidgetName(), comp.toData().getWidgetName())) { - selection.reset(); + XCreator selectXCreator = selection.getSelectedCreator(); + if (selectXCreator != null && comp != null) { + if (StringUtils.equals(selectXCreator.toData().getWidgetName(), comp.toData().getWidgetName())) { + return; + } } + selection.reset(); + } else { //按下Ctrl或者shift键时鼠标可以进行多选,两次点击同一控件就取消选中 XLayoutContainer topLayout = XCreatorUtils.getHotspotContainer(comp).getTopLayout(); 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 cab59d66e..65fc96b7e 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 @@ -1477,10 +1477,13 @@ public class FormDesigner extends TargetComponent
implements TreeSelection editingMouseListener.stopEditing(); editingMouseListener.stopEditTopLayout(comp); - if (!StringUtils.equals(editingMouseListener.getSelectionModel().getSelection().getSelectedCreator().toData().getWidgetName(), comp.toData().getWidgetName())) { - editingMouseListener.getSelectionModel().reset(); + XCreator selectXCreator = editingMouseListener.getSelectionModel().getSelection().getSelectedCreator(); + if (selectXCreator != null && comp != null) { + if (StringUtils.equals(selectXCreator.toData().getWidgetName(), comp.toData().getWidgetName())) { + return; + } } - + editingMouseListener.getSelectionModel().reset(); editingMouseListener.getSelectionModel().selectACreator(comp); }