瀏覽代碼

编辑器-导航-场景导航:拖拽到场景分组上之后,稍等一下再展开分组。

任一存 3 年之前
父節點
當前提交
9a9182f322
共有 1 個文件被更改,包括 22 次插入5 次删除
  1. 22 5
      packages/code/src/components/sceneGroupInEditor.vue

+ 22 - 5
packages/code/src/components/sceneGroupInEditor.vue

@@ -7,8 +7,9 @@
       :class="isConfirmingDeletion ? '' : 'show-icons-on-hover'"
       @click="onClickTopBar"
       @dragstart="onDragStart"
-      @dragenter="onDragEnter"
-      @dragend="clearDragInfo"
+      @dragenter.self="onDragEnter"
+      @dragend="onDragEnd"
+      @dragleave.self="onDragLeave"
       draggable="true"
       :style="{
         paddingLeft: topBarPaddingLeft,
@@ -193,6 +194,7 @@ export default {
       newName: '',
       isConfirmingDeletion: false,
       isShowSelectionWindow: false,
+      dragEnterTimerId: null,
     }
   },
   computed: {
@@ -330,11 +332,26 @@ export default {
       // e.dataTransfer.setDragImage(e.target.children[1], -10, -18)
     },
     onDragEnter(e) {
-      if (!this.isExpanded) {
-        this.isExpanded = true
-        this.$bus.emit('scene-group-expanded', this.groupNode.id, this.level)
+      if (e.target.contains(e.relatedTarget)) {
+        return
       }
+      this.dragEnterTimerId = setTimeout(() => {
+        if (!this.isExpanded) {
+          this.isExpanded = true
+          this.$bus.emit('scene-group-expanded', this.groupNode.id, this.level)
+        }
+      }, 700)
+    },
+    onDragEnd() {
+      this.clearDragInfo()
+      clearTimeout(this.dragEnterTimerId)
     },
+    onDragLeave(e) {
+      if (e.target.contains(e.relatedTarget)) {
+        return
+      }
+      clearTimeout(this.dragEnterTimerId)
+    }
   },
   mounted() {
     this.$bus.on('scene-group-expanded', this.onOtherSceneGroupExpanded)