fix dragon

This commit is contained in:
kangwei 2020-03-16 20:04:26 +08:00
parent 176a708f75
commit ffcd71ad88
3 changed files with 29 additions and 14 deletions

View File

@ -19,6 +19,9 @@ export default class Ghost extends Component<{ designer: Designer }> {
super(props); super(props);
this.dispose = [ this.dispose = [
this.dragon.onDragstart(e => { this.dragon.onDragstart(e => {
if (e.originalEvent.type.substr(0, 4) === 'drag') {
return;
}
this.dragObject = e.dragObject; this.dragObject = e.dragObject;
this.x = e.globalX; this.x = e.globalX;
this.y = e.globalY; this.y = e.globalY;

View File

@ -160,20 +160,27 @@ function getSourceSensor(dragObject: DragObject): ISimulator | null {
function makeEventsHandler( function makeEventsHandler(
boostEvent: MouseEvent | DragEvent, boostEvent: MouseEvent | DragEvent,
sensors?: ISimulator[], sensors: ISimulator[],
): (fn: (sdoc: Document) => void) => void { ): (fn: (sdoc: Document) => void) => void {
const doc = boostEvent.view?.document || document; const topDoc = window.top.document;
if (doc === document && !isDragEvent(boostEvent)) { const sourceDoc = boostEvent.view?.document || topDoc;
sensors = undefined; const boostPrevented = boostEvent.defaultPrevented;
const docs = new Set<Document>();
if (boostPrevented || isDragEvent(boostEvent)) {
docs.add(topDoc);
} }
return (fn: (sdoc: Document) => void) => { docs.add(sourceDoc);
fn(doc); if (sourceDoc !== topDoc || isDragEvent(boostEvent)) {
sensors?.forEach(sim => { sensors.forEach(sim => {
const sdoc = sim.contentDocument; const sdoc = sim.contentDocument;
if (sdoc && sdoc !== doc) { if (sdoc) {
fn(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; const { dataTransfer } = boostEvent;
if (dataTransfer) { if (dataTransfer) {
dataTransfer.setDragImage(this.emptyImage, 0, 0); // dataTransfer.setDragImage(this.emptyImage, 0, 0);
dataTransfer.effectAllowed = 'all'; dataTransfer.effectAllowed = 'all';
dataTransfer.dropEffect = newBie || forceCopyState ? 'copy' : 'move'; // dataTransfer.dropEffect = newBie || forceCopyState ? 'copy' : 'move';
try { try {
dataTransfer.setData('application/json', '{}'); dataTransfer.setData('application/json', '{}');
@ -472,6 +479,7 @@ export default class Dragon {
handleEvents(doc => { handleEvents(doc => {
if (isBoostFromDragAPI) { if (isBoostFromDragAPI) {
doc.addEventListener('dragover', move, true); doc.addEventListener('dragover', move, true);
// dragexit
didDrop = false; didDrop = false;
doc.addEventListener('drop', drop, true); doc.addEventListener('drop', drop, true);
doc.addEventListener('dragend', over, true); doc.addEventListener('dragend', over, true);

View File

@ -417,13 +417,17 @@ registerMetadataTransducer(metadata => {
}, },
}, },
getValue(field: SettingField) { getValue(field: SettingField, val?: any[]) {
let data = field.getPropValue('eventDataList'); return val;
let data = field.parent.getPropValue('eventDataList');
return data; return data;
}, },
setValue(field: SettingField, eventDataList: any[]) { setValue(field: SettingField, eventDataList: any[]) {
return;
console.info(eventDataList); console.info(eventDataList);
field.setPropValue('eventDataList', eventDataList); field.parent.setPropValue('eventDataList', eventDataList);
}, },
}, },
], ],