Fix dragging AE from compendium or within same actor

This commit is contained in:
Carlos Fernandez 2026-06-13 03:56:05 -04:00
parent 7a631c27a7
commit c06cdd49dd
4 changed files with 19 additions and 40 deletions

View file

@ -186,15 +186,6 @@ export default class AdversarySheet extends DHBaseActorSheet {
}); });
} }
/** @inheritdoc */
async _onDragStart(event) {
const inventoryItem = event.currentTarget.closest('.inventory-item');
if (inventoryItem) {
event.dataTransfer.setDragImage(inventoryItem.querySelector('img'), 60, 0);
}
super._onDragStart(event);
}
/* -------------------------------------------- */ /* -------------------------------------------- */
/* Application Clicks Actions */ /* Application Clicks Actions */
/* -------------------------------------------- */ /* -------------------------------------------- */

View file

@ -1193,15 +1193,6 @@ export default class CharacterSheet extends DHBaseActorSheet {
}); });
} }
/** @inheritdoc */
async _onDragStart(event) {
const inventoryItem = event.currentTarget.closest('.inventory-item');
if (inventoryItem) {
event.dataTransfer.setDragImage(inventoryItem.querySelector('img'), 60, 0);
}
super._onDragStart(event);
}
async _onDropItem(event, item) { async _onDropItem(event, item) {
const setupCriticalItemTypes = ['class', 'subclass', 'ancestry', 'community']; const setupCriticalItemTypes = ['class', 'subclass', 'ancestry', 'community'];
if (this.document.system.needsCharacterSetup && setupCriticalItemTypes.includes(item.type)) { if (this.document.system.needsCharacterSetup && setupCriticalItemTypes.includes(item.type)) {

View file

@ -361,20 +361,19 @@ export default function DHApplicationMixin(Base) {
*/ */
async _onDragStart(event) { async _onDragStart(event) {
const inventoryItem = event.currentTarget.closest('.inventory-item'); const inventoryItem = event.currentTarget.closest('.inventory-item');
if (inventoryItem) { if (!inventoryItem) return;
const { type, itemUuid } = inventoryItem.dataset; const { type, itemUuid } = inventoryItem.dataset;
if (type === 'effect') { const effect = type === 'effect' ? await foundry.utils.fromUuid(itemUuid) : null;
const effect = await foundry.utils.fromUuid(itemUuid); if (effect) {
const effectData = { const effectData = {
type: 'ActiveEffect', ...effect.toDragData(),
data: { ...effect.toObject(), _id: null },
fromInternal: this.document.uuid fromInternal: this.document.uuid
}; };
event.dataTransfer.setData('text/plain', JSON.stringify(effectData)); event.dataTransfer.setData('text/plain', JSON.stringify(effectData));
event.dataTransfer.setDragImage(inventoryItem.querySelector('img'), 60, 0); event.dataTransfer.setDragImage(inventoryItem.querySelector('img'), 60, 0);
} }
} }
}
/** /**
* Handle drop event. * Handle drop event.
@ -382,15 +381,11 @@ export default function DHApplicationMixin(Base) {
* @protected * @protected
*/ */
_onDrop(event) { _onDrop(event) {
// Fallback to super, but note that config sheets don't have this option
// We still need this to avoid setting apps having issues
event.stopPropagation(); event.stopPropagation();
const data = foundry.applications.ux.TextEditor.implementation.getDragEventData(event);
if (data.type === 'ActiveEffect' && data.fromInternal !== this.document.uuid) {
this.document.createEmbeddedDocuments('ActiveEffect', [data.data]);
} else {
// Fallback to super, but note that item sheets do not have this function
return super._onDrop?.(event); return super._onDrop?.(event);
} }
}
/* -------------------------------------------- */ /* -------------------------------------------- */
/* Context Menu */ /* Context Menu */

View file

@ -447,13 +447,15 @@ export default class DHBaseActorSheet extends DHApplicationMixin(ActorSheetV2) {
const item = await getDocFromElement(event.target); const item = await getDocFromElement(event.target);
if (item) { if (item) {
const inventoryItem = event.currentTarget.closest('.inventory-item');
const dragData = { const dragData = {
...item.toDragData(),
originActor: this.document.uuid, originActor: this.document.uuid,
originId: item.id, originId: item.id
type: item.documentName,
uuid: item.uuid
}; };
event.dataTransfer.setData('text/plain', JSON.stringify(dragData)); event.dataTransfer.setData('text/plain', JSON.stringify(dragData));
if (inventoryItem) event.dataTransfer.setDragImage(inventoryItem.querySelector('img'), 60, 0);
return;
} }
super._onDragStart(event); super._onDragStart(event);