Vanessa 2025-06-29 22:34:08 +08:00
parent 62850f8cc3
commit 42e9d00c4c
2 changed files with 21 additions and 4 deletions

View file

@ -809,12 +809,19 @@ const dragSame = async (protyle: IProtyle, sourceElements: Element[], targetElem
export const dropEvent = (protyle: IProtyle, editorElement: HTMLElement) => {
editorElement.addEventListener("dragstart", (event) => {
const target = event.target as HTMLElement;
let target = event.target as HTMLElement;
if (target.classList.contains("av__gallery-img")) {
target = hasClosestByClassName(target, "av__gallery-item") as HTMLElement;
}
if (!target) {
return;
}
if (target.tagName === "IMG") {
window.siyuan.dragElement = undefined;
event.preventDefault();
return;
}
if (target.classList) {
if (hasClosestByClassName(target, "protyle-wysiwyg__embed")) {
window.siyuan.dragElement = undefined;
@ -848,6 +855,9 @@ export const dropEvent = (protyle: IProtyle, editorElement: HTMLElement) => {
blockElement.querySelectorAll(".av__gallery-item--select").forEach(item => {
selectIds.push(item.getAttribute("data-id"));
});
if (selectIds.length === 0) {
selectIds.push(target.getAttribute("data-id"));
}
event.dataTransfer.setData(`${Constants.SIYUAN_DROP_GUTTER}NodeAttributeView${Constants.ZWSP}GalleryItem${Constants.ZWSP}${selectIds}`,
target.outerHTML);
}

View file

@ -619,10 +619,18 @@ export class WYSIWYG {
}
return;
}
const documentSelf = document;
// https://github.com/siyuan-note/siyuan/issues/15100
if (galleryItemElement) {
clearSelect(["galleryItem"], protyle.wysiwyg.element);
documentSelf.onmouseup = () => {
documentSelf.onmousemove = null;
documentSelf.onmouseup = null;
documentSelf.ondragstart = null;
documentSelf.onselectstart = null;
documentSelf.onselect = null;
clearSelect(["galleryItem"], protyle.wysiwyg.element);
return false;
};
return;
}
const avDragFillElement = hasClosestByClassName(target, "av__drag-fill");
@ -638,7 +646,6 @@ export class WYSIWYG {
(hasClosestByClassName(target, "av__cell--header") && !hasClosestByClassName(target, "av__widthdrag"))) {
return;
}
const documentSelf = document;
const wysiwygRect = protyle.wysiwyg.element.getBoundingClientRect();
const wysiwygStyle = window.getComputedStyle(protyle.wysiwyg.element);
const mostLeft = wysiwygRect.left + (parseInt(wysiwygStyle.paddingLeft) || 24) + 1;