From ffcd71ad88e3c0395899bf074118d638da9460a2 Mon Sep 17 00:00:00 2001 From: kangwei Date: Mon, 16 Mar 2020 20:04:26 +0800 Subject: [PATCH] fix dragon --- .../src/builtins/drag-ghost/index.tsx | 3 ++ .../designer/src/designer/helper/dragon.ts | 30 ++++++++++++------- .../src/register-transducer.ts | 10 +++++-- 3 files changed, 29 insertions(+), 14 deletions(-) diff --git a/packages/designer/src/builtins/drag-ghost/index.tsx b/packages/designer/src/builtins/drag-ghost/index.tsx index 781db03a2..29922ebea 100644 --- a/packages/designer/src/builtins/drag-ghost/index.tsx +++ b/packages/designer/src/builtins/drag-ghost/index.tsx @@ -19,6 +19,9 @@ export default class Ghost extends Component<{ designer: Designer }> { super(props); this.dispose = [ this.dragon.onDragstart(e => { + if (e.originalEvent.type.substr(0, 4) === 'drag') { + return; + } this.dragObject = e.dragObject; this.x = e.globalX; this.y = e.globalY; diff --git a/packages/designer/src/designer/helper/dragon.ts b/packages/designer/src/designer/helper/dragon.ts index c97e06bd1..232fb66f4 100644 --- a/packages/designer/src/designer/helper/dragon.ts +++ b/packages/designer/src/designer/helper/dragon.ts @@ -160,20 +160,27 @@ function getSourceSensor(dragObject: DragObject): ISimulator | null { function makeEventsHandler( boostEvent: MouseEvent | DragEvent, - sensors?: ISimulator[], + sensors: ISimulator[], ): (fn: (sdoc: Document) => void) => void { - const doc = boostEvent.view?.document || document; - if (doc === document && !isDragEvent(boostEvent)) { - sensors = undefined; + const topDoc = window.top.document; + const sourceDoc = boostEvent.view?.document || topDoc; + const boostPrevented = boostEvent.defaultPrevented; + const docs = new Set(); + if (boostPrevented || isDragEvent(boostEvent)) { + docs.add(topDoc); } - return (fn: (sdoc: Document) => void) => { - fn(doc); - sensors?.forEach(sim => { + docs.add(sourceDoc); + if (sourceDoc !== topDoc || isDragEvent(boostEvent)) { + sensors.forEach(sim => { const sdoc = sim.contentDocument; - if (sdoc && sdoc !== doc) { - fn(sdoc); + if (sdoc) { + docs.add(sdoc); } }); + } + + return (handle: (sdoc: Document) => void) => { + docs.forEach(doc => handle(doc)); }; } @@ -453,9 +460,9 @@ export default class Dragon { const { dataTransfer } = boostEvent; if (dataTransfer) { - dataTransfer.setDragImage(this.emptyImage, 0, 0); + // dataTransfer.setDragImage(this.emptyImage, 0, 0); dataTransfer.effectAllowed = 'all'; - dataTransfer.dropEffect = newBie || forceCopyState ? 'copy' : 'move'; + // dataTransfer.dropEffect = newBie || forceCopyState ? 'copy' : 'move'; try { dataTransfer.setData('application/json', '{}'); @@ -472,6 +479,7 @@ export default class Dragon { handleEvents(doc => { if (isBoostFromDragAPI) { doc.addEventListener('dragover', move, true); + // dragexit didDrop = false; doc.addEventListener('drop', drop, true); doc.addEventListener('dragend', over, true); diff --git a/packages/plugin-settings/src/register-transducer.ts b/packages/plugin-settings/src/register-transducer.ts index 7740b75d9..86ed426c6 100644 --- a/packages/plugin-settings/src/register-transducer.ts +++ b/packages/plugin-settings/src/register-transducer.ts @@ -417,13 +417,17 @@ registerMetadataTransducer(metadata => { }, }, - getValue(field: SettingField) { - let data = field.getPropValue('eventDataList'); + getValue(field: SettingField, val?: any[]) { + return val; + + let data = field.parent.getPropValue('eventDataList'); return data; }, setValue(field: SettingField, eventDataList: any[]) { + return; + console.info(eventDataList); - field.setPropValue('eventDataList', eventDataList); + field.parent.setPropValue('eventDataList', eventDataList); }, }, ],