mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-05-21 19:41:05 +08:00
This commit is contained in:
parent
de2a414968
commit
d44f47e9b5
@ -39,7 +39,7 @@ export const initBlockPopover = () => {
|
|||||||
} else if (!aElement) {
|
} else if (!aElement) {
|
||||||
hideTooltip();
|
hideTooltip();
|
||||||
}
|
}
|
||||||
if (window.siyuan.config.editor.floatWindowMode === 1) {
|
if (window.siyuan.config.editor.floatWindowMode === 1 || window.siyuan.shiftIsPressed) {
|
||||||
clearTimeout(timeoutHide);
|
clearTimeout(timeoutHide);
|
||||||
timeoutHide = window.setTimeout(() => {
|
timeoutHide = window.setTimeout(() => {
|
||||||
hidePopover(event);
|
hidePopover(event);
|
||||||
@ -51,6 +51,9 @@ export const initBlockPopover = () => {
|
|||||||
if (window.siyuan.ctrlIsPressed) {
|
if (window.siyuan.ctrlIsPressed) {
|
||||||
clearTimeout(timeoutHide);
|
clearTimeout(timeoutHide);
|
||||||
showPopover();
|
showPopover();
|
||||||
|
} else if (window.siyuan.shiftIsPressed) {
|
||||||
|
clearTimeout(timeoutHide);
|
||||||
|
showPopover(true);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -65,7 +68,7 @@ export const initBlockPopover = () => {
|
|||||||
clearTimeout(timeout);
|
clearTimeout(timeout);
|
||||||
}
|
}
|
||||||
}, 200);
|
}, 200);
|
||||||
timeout = window.setTimeout(async () => {
|
timeout = window.setTimeout(() => {
|
||||||
if (!getTarget(event, aElement)) {
|
if (!getTarget(event, aElement)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -159,7 +162,7 @@ const getTarget = (event: MouseEvent & { target: HTMLElement }, aElement: false
|
|||||||
aElement.getAttribute("prevent-popover") !== "true") {
|
aElement.getAttribute("prevent-popover") !== "true") {
|
||||||
popoverTargetElement = aElement;
|
popoverTargetElement = aElement;
|
||||||
}
|
}
|
||||||
if (!popoverTargetElement || window.siyuan.altIsPressed || window.siyuan.shiftIsPressed ||
|
if (!popoverTargetElement || window.siyuan.altIsPressed ||
|
||||||
(window.siyuan.config.editor.floatWindowMode === 0 && window.siyuan.ctrlIsPressed) ||
|
(window.siyuan.config.editor.floatWindowMode === 0 && window.siyuan.ctrlIsPressed) ||
|
||||||
(popoverTargetElement && popoverTargetElement.getAttribute("prevent-popover") === "true")) {
|
(popoverTargetElement && popoverTargetElement.getAttribute("prevent-popover") === "true")) {
|
||||||
return false;
|
return false;
|
||||||
@ -174,7 +177,7 @@ const getTarget = (event: MouseEvent & { target: HTMLElement }, aElement: false
|
|||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const showPopover = async () => {
|
export const showPopover = async (showRef = false) => {
|
||||||
if (!popoverTargetElement) {
|
if (!popoverTargetElement) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -183,12 +186,18 @@ export const showPopover = async () => {
|
|||||||
const dataId = popoverTargetElement.getAttribute("data-id");
|
const dataId = popoverTargetElement.getAttribute("data-id");
|
||||||
if (dataId) {
|
if (dataId) {
|
||||||
// backlink/util/hint/正文标题 上的弹层
|
// backlink/util/hint/正文标题 上的弹层
|
||||||
|
if (showRef) {
|
||||||
|
const postResponse = await fetchSyncPost("/api/block/getRefIDs", {id: dataId});
|
||||||
|
ids = postResponse.data.refIDs;
|
||||||
|
defIds = postResponse.data.defIDs;
|
||||||
|
} else {
|
||||||
if (dataId.startsWith("[")) {
|
if (dataId.startsWith("[")) {
|
||||||
ids = JSON.parse(dataId);
|
ids = JSON.parse(dataId);
|
||||||
} else {
|
} else {
|
||||||
ids = [dataId];
|
ids = [dataId];
|
||||||
}
|
}
|
||||||
defIds = JSON.parse(popoverTargetElement.getAttribute("data-defids") || "[]");
|
defIds = JSON.parse(popoverTargetElement.getAttribute("data-defids") || "[]");
|
||||||
|
}
|
||||||
} else if (popoverTargetElement.getAttribute("data-type")?.indexOf("virtual-block-ref") > -1) {
|
} else if (popoverTargetElement.getAttribute("data-type")?.indexOf("virtual-block-ref") > -1) {
|
||||||
const nodeElement = hasClosestBlock(popoverTargetElement);
|
const nodeElement = hasClosestBlock(popoverTargetElement);
|
||||||
if (nodeElement) {
|
if (nodeElement) {
|
||||||
@ -237,5 +246,5 @@ export const showPopover = async () => {
|
|||||||
defIds,
|
defIds,
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
popoverTargetElement = undefined;
|
// 不能清除,否则ctrl 后 shift 就 无效 popoverTargetElement = undefined;
|
||||||
};
|
};
|
||||||
|
@ -435,6 +435,9 @@ export const globalShortcut = (app: App) => {
|
|||||||
if (!event.altKey && event.shiftKey && !isCtrl(event)) {
|
if (!event.altKey && event.shiftKey && !isCtrl(event)) {
|
||||||
if (event.key === "Shift") {
|
if (event.key === "Shift") {
|
||||||
window.siyuan.shiftIsPressed = true;
|
window.siyuan.shiftIsPressed = true;
|
||||||
|
if (!event.repeat) {
|
||||||
|
showPopover(true);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
window.siyuan.shiftIsPressed = false;
|
window.siyuan.shiftIsPressed = false;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user