This commit is contained in:
Vanessa 2024-09-22 19:43:10 +08:00 committed by Daniel
parent 1d2f6d276f
commit 2cf0b09282
No known key found for this signature in database
GPG key ID: 86211BA83DF03017
5 changed files with 81 additions and 32 deletions

View file

@ -3,8 +3,11 @@ import {genUUID} from "../util/genID";
import {
fixWndFlex1,
getInstanceById,
getWndByLayout, JSONToCenter,
newModelByInitData, pdfIsLoading, saveLayout,
getWndByLayout,
JSONToCenter,
newModelByInitData,
pdfIsLoading,
saveLayout,
setPanelFocus,
switchWnd
} from "./util";
@ -20,7 +23,7 @@ import {
} from "../protyle/util/hasClosest";
import {Constants} from "../constants";
/// #if !BROWSER
import {webFrame, ipcRenderer} from "electron";
import {ipcRenderer, webFrame} from "electron";
import {setModelsHash, setTabPosition} from "../window/setHeader";
/// #endif
import {Search} from "../search";
@ -198,16 +201,24 @@ export class Wnd {
}
});
let dragleaveTimeout: number;
let headerDragCounter = 0;
this.headersElement.parentElement.addEventListener("dragleave", function () {
clearTimeout(dragleaveTimeout);
// 窗口拖拽到新窗口时,不 drop 无法移除 clone 的元素
dragleaveTimeout = window.setTimeout(() => {
document.querySelectorAll(".layout-tab-bar li[data-clone='true']").forEach(item => {
item.remove();
});
}, 1000);
const it = this as HTMLElement;
it.classList.remove("layout-tab-bars--drag");
headerDragCounter--;
if (headerDragCounter === 0) {
clearTimeout(dragleaveTimeout);
// 窗口拖拽到新窗口时,不 drop 无法移除 clone 的元素
dragleaveTimeout = window.setTimeout(() => {
document.querySelectorAll(".layout-tab-bar li[data-clone='true']").forEach(item => {
item.remove();
});
}, 1000);
const it = this as HTMLElement;
it.classList.remove("layout-tab-bars--drag");
}
});
this.headersElement.parentElement.addEventListener("dragenter", (event) => {
event.preventDefault();
headerDragCounter++;
});
this.headersElement.parentElement.addEventListener("drop", function (event: DragEvent & {
target: HTMLElement

View file

@ -451,7 +451,9 @@ export class Files extends Model {
event.preventDefault();
return;
}
liElement.classList.remove("dragover__top", "dragover__bottom", "dragover");
this.element.querySelectorAll(".dragover, .dragover__bottom, .dragover__top").forEach((item: HTMLElement) => {
item.classList.remove("dragover", "dragover__bottom", "dragover__top");
});
let gutterType = "";
for (const item of event.dataTransfer.items) {
if (item.type.startsWith(Constants.SIYUAN_DROP_GUTTER)) {
@ -510,10 +512,18 @@ export class Files extends Model {
liElement.classList.add("dragover");
event.preventDefault();
});
let counter = 0;
this.element.addEventListener("dragleave", () => {
this.element.querySelectorAll(".dragover, .dragover__bottom, .dragover__top").forEach((item: HTMLElement) => {
item.classList.remove("dragover", "dragover__bottom", "dragover__top");
});
counter--;
if (counter === 0) {
this.element.querySelectorAll(".dragover, .dragover__bottom, .dragover__top").forEach((item: HTMLElement) => {
item.classList.remove("dragover", "dragover__bottom", "dragover__top");
});
}
});
this.element.addEventListener("dragenter", (event) => {
event.preventDefault();
counter++;
});
this.element.addEventListener("drop", async (event: DragEvent & { target: HTMLElement }) => {
const newElement = this.element.querySelector(".dragover, .dragover__bottom, .dragover__top");