From 4bdd8c4304d0512b69cada37bbed76f3a093e889 Mon Sep 17 00:00:00 2001
From: bobzel <zzzman@gmail.com>
Date: Mon, 13 Sep 2021 23:01:27 -0400
Subject: added drop code for dropping onto an audio stackedTimeline

---
 .../collections/CollectionStackedTimeline.tsx      | 23 ++++++++++++++++++++--
 1 file changed, 21 insertions(+), 2 deletions(-)

(limited to 'src/client/views/collections/CollectionStackedTimeline.tsx')

diff --git a/src/client/views/collections/CollectionStackedTimeline.tsx b/src/client/views/collections/CollectionStackedTimeline.tsx
index 0fc66445a..65022fdfd 100644
--- a/src/client/views/collections/CollectionStackedTimeline.tsx
+++ b/src/client/views/collections/CollectionStackedTimeline.tsx
@@ -44,6 +44,8 @@ import { LabelBox } from "../nodes/LabelBox";
 import "./CollectionStackedTimeline.scss";
 import { Colors } from "../global/globalEnums";
 import { DocumentManager } from "../../util/DocumentManager";
+import { SnappingManager } from "../../util/SnappingManager";
+import { DragManager } from "../../util/DragManager";
 
 type PanZoomDocument = makeInterface<[]>;
 const PanZoomDocument = makeInterface();
@@ -345,6 +347,22 @@ export class CollectionStackedTimeline extends CollectionSubView<
         );
     }
 
+    @action
+    internalDocDrop(e: Event, de: DragManager.DropEvent, docDragData: DragManager.DocumentDragData, xp: number) {
+        if (!de.embedKey && this.props.layerProvider?.(this.props.Document) !== false && this.props.Document._isGroup) return false;
+        if (!super.onInternalDrop(e, de)) return false;
+
+
+        // determine x coordinate of drop and assign it to the documents being dragged  --- see internalDocDrop of collectionFreeFormView.tsx for how it's done when dropping onto a 2D freeform view
+
+        return true;
+    }
+
+    onInternalDrop = (e: Event, de: DragManager.DropEvent) => {
+        if (de.complete.docDragData?.droppedDocuments.length) return this.internalDocDrop(e, de, de.complete.docDragData, 0);
+        return false;
+    }
+
     @undoBatch
     @action
     static createAnchor(
@@ -361,6 +379,7 @@ export class CollectionStackedTimeline extends CollectionSubView<
             title: ComputedField.MakeFunction(
                 `"#" + formatToTime(self["${startTag}"]) + "-" + formatToTime(self["${endTag}"])`
             ) as any,
+            _stayInCollection: true,
             useLinkSmallAnchor: true,
             hideLinkButton: true,
             annotationOn: rootDoc,
@@ -537,7 +556,7 @@ export class CollectionStackedTimeline extends CollectionSubView<
         const maxLevel = overlaps.reduce((m, o) => Math.max(m, o.level), 0) + 2;
         const isActive =
             this.props.isContentActive() || this.props.isSelected(false);
-        return (
+        return (<div ref={this.createDashEventsTarget} style={{ pointerEvents: SnappingManager.GetIsDragging() ? "all" : undefined }}>
             <div
                 className="collectionStackedTimeline"
                 ref={(timeline: HTMLDivElement | null) => (this._timeline = timeline)}
@@ -642,7 +661,7 @@ export class CollectionStackedTimeline extends CollectionSubView<
                     </>
                 )}
             </div>
-        );
+        </div>);
     }
 }
 
-- 
cgit v1.2.3-70-g09d2

