Prechádzať zdrojové kódy

chore: remove phantom where dragTarget disappear

appflowy 2 rokov pred
rodič
commit
e592a09ec3

+ 4 - 2
frontend/app_flowy/packages/flowy_board/lib/src/widgets/flex/drag_target_inteceptor.dart

@@ -23,7 +23,9 @@ abstract class ReorderFlexDragTargetInterceptor {
   ReorderFlexDraggableTargetBuilder? get draggableTargetBuilder => null;
 }
 
-abstract class OverlapReorderFlexDragTargetDelegate {}
+abstract class OverlapReorderFlexDragTargetDelegate {
+  void dragTargetDidDisappear();
+}
 
 class OverlapReorderFlexDragTargetInteceptor
     extends ReorderFlexDragTargetInterceptor {
@@ -50,7 +52,7 @@ class OverlapReorderFlexDragTargetInteceptor
       required String dragTargetId,
       required int dragTargetIndex}) {
     if (dragTargetId == dragTargetData.reorderFlexId) {
-      Log.debug('remove all phantom');
+      delegate.dragTargetDidDisappear();
     } else {
       Log.debug('add phantom to $dragTargetId');
     }

+ 1 - 1
frontend/app_flowy/packages/flowy_board/lib/src/widgets/flex/reorder_flex.dart

@@ -396,7 +396,7 @@ class ReorderFlexState extends State<ReorderFlex>
     /// The [willAccept] will be true if the dargTarget is the widget that gets
     /// dragged and it is dragged on top of the other dragTargets.
     ///
-    Log.debug(
+    Log.trace(
         '[$ReorderDragTarget] ${widget.dataSource.identifier} on will accept, dragIndex:$dragIndex, dragTargetIndex:$dragTargetIndex, count: ${widget.dataSource.items.length}');
 
     bool willAccept =

+ 10 - 0
frontend/app_flowy/packages/flowy_board/lib/src/widgets/phantom/phantom_controller.dart

@@ -207,6 +207,16 @@ class BoardPhantomController extends OverlapReorderFlexDragTargetDelegate
       _updatePhantom(phantomRecord!.toColumnId, dragTargetIndex);
     }
   }
+
+  @override
+  void dragTargetDidDisappear() {
+    if (phantomRecord == null) {
+      return;
+    }
+
+    _removePhantom(phantomRecord!.toColumnId);
+    phantomRecord = null;
+  }
 }
 
 /// Use [PhantomRecord] to record where to remove the column item and where to