This commit is contained in:
parent
427ec33b78
commit
31a573d90d
1 changed files with 26 additions and 25 deletions
|
@ -1472,12 +1472,13 @@ export class WYSIWYG {
|
|||
let shiftStartElement: HTMLElement;
|
||||
this.element.addEventListener("click", (event: MouseEvent & { target: HTMLElement }) => {
|
||||
hideElements(["hint", "util"], protyle);
|
||||
const ctrlIsPressed = event.metaKey || event.ctrlKey
|
||||
/// #if !MOBILE
|
||||
const backlinkBreadcrumbItemElement = hasClosestByClassName(event.target, "protyle-breadcrumb__item");
|
||||
if (backlinkBreadcrumbItemElement) {
|
||||
const breadcrumbId = backlinkBreadcrumbItemElement.getAttribute("data-id");
|
||||
if (breadcrumbId) {
|
||||
if (window.siyuan.ctrlIsPressed) {
|
||||
if (ctrlIsPressed) {
|
||||
openFileById({
|
||||
id: breadcrumbId,
|
||||
action: breadcrumbId === protyle.block.rootID ? [Constants.CB_GET_FOCUS] : [Constants.CB_GET_FOCUS, Constants.CB_GET_ALL]
|
||||
|
@ -1493,7 +1494,7 @@ export class WYSIWYG {
|
|||
return;
|
||||
}
|
||||
/// #endif
|
||||
if (!window.siyuan.shiftIsPressed) {
|
||||
if (!event.shiftKey) {
|
||||
shiftStartElement = undefined;
|
||||
}
|
||||
this.setEmptyOutline(protyle, event.target);
|
||||
|
@ -1518,7 +1519,7 @@ export class WYSIWYG {
|
|||
event.stopPropagation();
|
||||
event.preventDefault();
|
||||
hideElements(["dialog", "toolbar"], protyle);
|
||||
if (range.toString() !== "" && !window.siyuan.shiftIsPressed) {
|
||||
if (range.toString() !== "" && !event.shiftKey) {
|
||||
// 选择不打开引用
|
||||
return;
|
||||
}
|
||||
|
@ -1537,21 +1538,21 @@ export class WYSIWYG {
|
|||
window.open(aElement.getAttribute("data-href"));
|
||||
return;
|
||||
}
|
||||
if (window.siyuan.shiftIsPressed) {
|
||||
if (event.shiftKey) {
|
||||
openFileById({
|
||||
id: refBlockId,
|
||||
position: "bottom",
|
||||
action: foldResponse.data ? [Constants.CB_GET_FOCUS, Constants.CB_GET_ALL] : [Constants.CB_GET_FOCUS, Constants.CB_GET_CONTEXT],
|
||||
zoomIn: foldResponse.data
|
||||
});
|
||||
} else if (window.siyuan.altIsPressed) {
|
||||
} else if (event.altKey) {
|
||||
openFileById({
|
||||
id: refBlockId,
|
||||
position: "right",
|
||||
action: foldResponse.data ? [Constants.CB_GET_FOCUS, Constants.CB_GET_ALL] : [Constants.CB_GET_FOCUS, Constants.CB_GET_CONTEXT],
|
||||
zoomIn: foldResponse.data
|
||||
});
|
||||
} else if (window.siyuan.ctrlIsPressed) {
|
||||
} else if (ctrlIsPressed) {
|
||||
openFileById({
|
||||
id: refBlockId,
|
||||
action: foldResponse.data ? [Constants.CB_GET_FOCUS, Constants.CB_GET_ALL] : [Constants.CB_GET_HL, Constants.CB_GET_CONTEXT],
|
||||
|
@ -1593,9 +1594,9 @@ export class WYSIWYG {
|
|||
/// #if MOBILE
|
||||
openByMobile(linkAddress);
|
||||
/// #else
|
||||
if (window.siyuan.ctrlIsPressed) {
|
||||
if (ctrlIsPressed) {
|
||||
openBy(linkAddress, "folder");
|
||||
} else if (window.siyuan.shiftIsPressed) {
|
||||
} else if (event.shiftKey) {
|
||||
openBy(linkAddress, "app");
|
||||
} else {
|
||||
openAsset(linkAddress, fileIds[2], "right");
|
||||
|
@ -1604,7 +1605,7 @@ export class WYSIWYG {
|
|||
return;
|
||||
}
|
||||
|
||||
if (aElement && !window.siyuan.altIsPressed) {
|
||||
if (aElement && !event.altKey) {
|
||||
event.stopPropagation();
|
||||
event.preventDefault();
|
||||
const linkAddress = aElement.getAttribute("data-href");
|
||||
|
@ -1617,16 +1618,16 @@ export class WYSIWYG {
|
|||
(!linkPathname.endsWith(".pdf") ||
|
||||
(linkPathname.endsWith(".pdf") && !linkAddress.startsWith("file://")))
|
||||
) {
|
||||
if (window.siyuan.ctrlIsPressed) {
|
||||
if (ctrlIsPressed) {
|
||||
openBy(linkAddress, "folder");
|
||||
} else if (window.siyuan.shiftIsPressed) {
|
||||
} else if (event.shiftKey) {
|
||||
openBy(linkAddress, "app");
|
||||
} else {
|
||||
openAsset(linkPathname, parseInt(getSearch("page", linkAddress)), "right");
|
||||
}
|
||||
} else {
|
||||
/// #if !BROWSER
|
||||
if (window.siyuan.ctrlIsPressed) {
|
||||
if (ctrlIsPressed) {
|
||||
openBy(linkAddress, "folder");
|
||||
} else {
|
||||
openBy(linkAddress, "app");
|
||||
|
@ -1650,8 +1651,8 @@ export class WYSIWYG {
|
|||
|
||||
/// #if !MOBILE
|
||||
const tagElement = hasClosestByAttribute(event.target, "data-type", "tag");
|
||||
if (tagElement && !window.siyuan.altIsPressed && protyle.model) {
|
||||
openGlobalSearch(`#${tagElement.textContent}#`, !window.siyuan.ctrlIsPressed);
|
||||
if (tagElement && !event.altKey && protyle.model) {
|
||||
openGlobalSearch(`#${tagElement.textContent}#`, !ctrlIsPressed);
|
||||
hideElements(["dialog"]);
|
||||
return;
|
||||
}
|
||||
|
@ -1663,21 +1664,21 @@ export class WYSIWYG {
|
|||
/// #if MOBILE
|
||||
openMobileFileById(embedId, [Constants.CB_GET_ALL]);
|
||||
/// #else
|
||||
if (window.siyuan.shiftIsPressed) {
|
||||
if (event.shiftKey) {
|
||||
openFileById({
|
||||
id: embedId,
|
||||
position: "bottom",
|
||||
action: [Constants.CB_GET_FOCUS, Constants.CB_GET_ALL],
|
||||
zoomIn: true
|
||||
});
|
||||
} else if (window.siyuan.altIsPressed) {
|
||||
} else if (event.altKey) {
|
||||
openFileById({
|
||||
id: embedId,
|
||||
position: "right",
|
||||
action: [Constants.CB_GET_FOCUS, Constants.CB_GET_ALL],
|
||||
zoomIn: true
|
||||
});
|
||||
} else if (window.siyuan.ctrlIsPressed) {
|
||||
} else if (ctrlIsPressed) {
|
||||
openFileById({
|
||||
id: embedId,
|
||||
action: [Constants.CB_GET_FOCUS, Constants.CB_GET_ALL],
|
||||
|
@ -1767,7 +1768,7 @@ export class WYSIWYG {
|
|||
|
||||
// 需放在属性后,否则数学公式无法点击属性;需放在 action 后,否则嵌入块的的 action 无法打开;需放在嵌入块后,否则嵌入块中的数学公式会被打开
|
||||
const mathElement = hasClosestByAttribute(event.target, "data-subtype", "math");
|
||||
if (!window.siyuan.shiftIsPressed && !window.siyuan.ctrlIsPressed && mathElement && !protyle.disabled) {
|
||||
if (!event.shiftKey && !ctrlIsPressed && mathElement && !protyle.disabled) {
|
||||
protyle.toolbar.showRender(protyle, mathElement);
|
||||
event.stopPropagation();
|
||||
return;
|
||||
|
@ -1782,7 +1783,7 @@ export class WYSIWYG {
|
|||
clientY: event.clientY
|
||||
});
|
||||
} else if (!protyle.disabled && actionElement.parentElement.classList.contains("li")) {
|
||||
if (window.siyuan.altIsPressed) {
|
||||
if (event.altKey) {
|
||||
// 展开/折叠当前层级的所有列表项
|
||||
if (actionElement.parentElement.parentElement.classList.contains("protyle-wysiwyg")) {
|
||||
// 缩放列表项 https://ld246.com/article/1653123034794
|
||||
|
@ -1810,9 +1811,9 @@ export class WYSIWYG {
|
|||
updateTransaction(protyle, actionElement.parentElement.parentElement.getAttribute("data-node-id"), actionElement.parentElement.parentElement.outerHTML, oldHTML);
|
||||
}
|
||||
hideElements(["gutter"], protyle);
|
||||
} else if (window.siyuan.shiftIsPressed) {
|
||||
} else if (event.shiftKey) {
|
||||
openAttr(actionElement.parentElement, protyle);
|
||||
} else if (window.siyuan.ctrlIsPressed) {
|
||||
} else if (ctrlIsPressed) {
|
||||
zoomOut(protyle, actionElement.parentElement.getAttribute("data-node-id"));
|
||||
} else {
|
||||
if (actionElement.classList.contains("protyle-action--task")) {
|
||||
|
@ -1841,14 +1842,14 @@ export class WYSIWYG {
|
|||
|
||||
const selectElement = hasClosestByClassName(event.target, "hr") ||
|
||||
hasClosestByClassName(event.target, "iframe");
|
||||
if (!window.siyuan.shiftIsPressed && !window.siyuan.ctrlIsPressed && selectElement) {
|
||||
if (!event.shiftKey && !ctrlIsPressed && selectElement) {
|
||||
selectElement.classList.add("protyle-wysiwyg--select");
|
||||
event.stopPropagation();
|
||||
return;
|
||||
}
|
||||
|
||||
const imgElement = hasTopClosestByClassName(event.target, "img");
|
||||
if (!window.siyuan.shiftIsPressed && !window.siyuan.ctrlIsPressed && imgElement) {
|
||||
if (!event.shiftKey && !ctrlIsPressed && imgElement) {
|
||||
imgElement.classList.add("img--select");
|
||||
range.setStartAfter(imgElement);
|
||||
range.collapse(true);
|
||||
|
@ -1907,7 +1908,7 @@ export class WYSIWYG {
|
|||
/// #endif
|
||||
}, (isMobile() || window.webkit?.messageHandlers) ? 520 : 0); // Android/iPad 双击慢了出不来
|
||||
protyle.hint.enableExtend = false;
|
||||
if (window.siyuan.shiftIsPressed) {
|
||||
if (event.shiftKey) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
// shift 多选
|
||||
|
@ -2016,7 +2017,7 @@ export class WYSIWYG {
|
|||
focusByRange(range);
|
||||
}
|
||||
|
||||
if (window.siyuan.ctrlIsPressed) {
|
||||
if (ctrlIsPressed) {
|
||||
let ctrlElement = hasClosestBlock(event.target);
|
||||
if (ctrlElement) {
|
||||
ctrlElement = getTopAloneElement(ctrlElement) as HTMLElement;
|
||||
|
|
Loading…
Add table
Reference in a new issue