mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-18 15:40:12 +01:00
🎨 https://github.com/siyuan-note/siyuan/issues/11205 & https://github.com/siyuan-note/siyuan/pull/15824
This commit is contained in:
parent
d9e0c56a47
commit
ec6e7a019e
9 changed files with 63 additions and 58 deletions
|
|
@ -40,6 +40,7 @@ import {openCard} from "../../../card/openCard";
|
|||
import {syncGuide} from "../../../sync/syncGuide";
|
||||
import {Wnd} from "../../../layout/Wnd";
|
||||
import {unsplitWnd} from "../../../menus/tab";
|
||||
import {openFileById} from "../../../editor/util";
|
||||
|
||||
export const globalCommand = (command: string, app: App) => {
|
||||
/// #if MOBILE
|
||||
|
|
@ -148,6 +149,15 @@ export const globalCommand = (command: string, app: App) => {
|
|||
case "recentDocs":
|
||||
openRecentDocs();
|
||||
return true;
|
||||
case "recentClosed":
|
||||
if (window.siyuan.closedTabs.length > 0) {
|
||||
openFileById({
|
||||
app,
|
||||
id: window.siyuan.closedTabs.pop(),
|
||||
action: [Constants.CB_GET_FOCUS, Constants.CB_GET_SCROLL]
|
||||
});
|
||||
}
|
||||
return true;
|
||||
case "toggleDock":
|
||||
toggleDockBar(document.querySelector("#barDock use"));
|
||||
return true;
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ export const commandPanel = (app: App) => {
|
|||
"goToTab5", "goToTab6", "goToTab7", "goToTab8", "goToTab9", "goToTabNext", "goToTabPrev", "lockScreen",
|
||||
"mainMenu", "move", "newFile", "recentDocs", "replace", "riffCard", "search", "selectOpen1", "syncNow",
|
||||
"splitLR", "splitMoveB", "splitMoveR", "splitTB", "tabToWindow", "stickSearch", "toggleDock", "unsplitAll",
|
||||
"unsplit"];
|
||||
"unsplit", "recentClosed"];
|
||||
/// #if !BROWSER
|
||||
keys.push("toggleWin");
|
||||
/// #endif
|
||||
|
|
|
|||
|
|
@ -1532,15 +1532,10 @@ export const windowKeyDown = (app: App, event: KeyboardEvent) => {
|
|||
return;
|
||||
}
|
||||
|
||||
if (matchHotKey("⇧⌘T", event)) {
|
||||
if ((window as any).siyuan.closedTabs && (window as any).siyuan.closedTabs.length > 0) {
|
||||
const closedTab = (window as any).siyuan.closedTabs.pop();
|
||||
openFileById({
|
||||
app,
|
||||
id: closedTab.id,
|
||||
action: [Constants.CB_GET_FOCUS, Constants.CB_GET_SCROLL]
|
||||
if (matchHotKey(window.siyuan.config.keymap.general.recentClosed.custom, event)) {
|
||||
execByCommand({
|
||||
command: "closeTab"
|
||||
});
|
||||
}
|
||||
event.preventDefault();
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -453,6 +453,7 @@ export abstract class Constants {
|
|||
goToTabPrev: {default: "⇧⌘[", custom: "⇧⌘["},
|
||||
goToEditTabNext: {default: "⌃⇥", custom: "⌃⇥"},
|
||||
goToEditTabPrev: {default: "⌃⇧⇥", custom: "⌃⇧⇥"},
|
||||
recentClosed: {default: "⇧⌘T", custom: "⇧⌘T"},
|
||||
move: {default: "", custom: ""},
|
||||
selectOpen1: {default: "", custom: ""},
|
||||
toggleDock: {default: "", custom: ""},
|
||||
|
|
|
|||
|
|
@ -56,6 +56,7 @@ export class App {
|
|||
layout: {},
|
||||
dialogs: [],
|
||||
blockPanels: [],
|
||||
closedTabs: [],
|
||||
ctrlIsPressed: false,
|
||||
altIsPressed: false,
|
||||
ws: new Model({
|
||||
|
|
|
|||
|
|
@ -793,12 +793,7 @@ export class Wnd {
|
|||
saveScroll(item.model.editor.protyle);
|
||||
// 更新文档关闭时间
|
||||
fetchPost("/api/storage/updateRecentDocCloseTime", {rootID: item.model.editor.protyle.block.rootID});
|
||||
if (!(window as any).siyuan.closedTabs) {
|
||||
(window as any).siyuan.closedTabs = [];
|
||||
}
|
||||
(window as any).siyuan.closedTabs.push({
|
||||
id: item.model.editor.protyle.block.rootID
|
||||
});
|
||||
window.siyuan.closedTabs.push(item.model.editor.protyle.block.rootID);
|
||||
}
|
||||
if (this.children.length === 1) {
|
||||
this.destroyModel(this.children[0].model);
|
||||
|
|
|
|||
73
app/src/types/config.d.ts
vendored
73
app/src/types/config.d.ts
vendored
|
|
@ -1000,29 +1000,35 @@ declare namespace Config {
|
|||
* SiYuan general shortcut keys
|
||||
*/
|
||||
export interface IKeymapGeneral extends IKeys {
|
||||
addToDatabase: IKey;
|
||||
backlinks: IKey;
|
||||
bookmark: IKey;
|
||||
closeAll: IKey;
|
||||
closeLeft: IKey;
|
||||
closeOthers: IKey;
|
||||
closeRight: IKey;
|
||||
closeTab: IKey;
|
||||
closeUnmodified: IKey;
|
||||
mainMenu: IKey;
|
||||
commandPanel: IKey;
|
||||
config: IKey;
|
||||
dailyNote: IKey;
|
||||
dataHistory: IKey;
|
||||
editReadonly: IKey;
|
||||
enter: IKey;
|
||||
syncNow: IKey;
|
||||
enterBack: IKey;
|
||||
fileTree: IKey;
|
||||
globalGraph: IKey;
|
||||
globalSearch: IKey;
|
||||
goBack: IKey;
|
||||
enter: IKey;
|
||||
goForward: IKey;
|
||||
goToEditTabNext: IKey;
|
||||
goToEditTabPrev: IKey;
|
||||
goBack: IKey;
|
||||
newFile: IKey;
|
||||
search: IKey;
|
||||
globalSearch: IKey;
|
||||
stickSearch: IKey;
|
||||
replace: IKey;
|
||||
closeTab: IKey;
|
||||
fileTree: IKey;
|
||||
outline: IKey;
|
||||
bookmark: IKey;
|
||||
tag: IKey;
|
||||
dailyNote: IKey;
|
||||
inbox: IKey;
|
||||
backlinks: IKey;
|
||||
graphView: IKey;
|
||||
globalGraph: IKey;
|
||||
riffCard: IKey;
|
||||
config: IKey;
|
||||
dataHistory: IKey;
|
||||
toggleWin: IKey;
|
||||
lockScreen: IKey;
|
||||
recentDocs: IKey;
|
||||
goToTab1: IKey;
|
||||
goToTab2: IKey;
|
||||
goToTab3: IKey;
|
||||
|
|
@ -1034,28 +1040,25 @@ declare namespace Config {
|
|||
goToTab9: IKey;
|
||||
goToTabNext: IKey;
|
||||
goToTabPrev: IKey;
|
||||
graphView: IKey;
|
||||
inbox: IKey;
|
||||
lockScreen: IKey;
|
||||
mainMenu: IKey;
|
||||
goToEditTabNext: IKey;
|
||||
goToEditTabPrev: IKey;
|
||||
recentClosed: IKey;
|
||||
move: IKey;
|
||||
newFile: IKey;
|
||||
outline: IKey;
|
||||
recentDocs: IKey;
|
||||
replace: IKey;
|
||||
riffCard: IKey;
|
||||
search: IKey;
|
||||
selectOpen1: IKey;
|
||||
toggleDock: IKey;
|
||||
splitLR: IKey;
|
||||
splitMoveB: IKey;
|
||||
splitMoveR: IKey;
|
||||
splitTB: IKey;
|
||||
stickSearch: IKey;
|
||||
syncNow: IKey;
|
||||
splitMoveB: IKey;
|
||||
closeOthers: IKey;
|
||||
closeAll: IKey;
|
||||
closeUnmodified: IKey;
|
||||
closeLeft: IKey;
|
||||
closeRight: IKey;
|
||||
tabToWindow: IKey;
|
||||
tag: IKey;
|
||||
toggleDock: IKey;
|
||||
toggleWin: IKey;
|
||||
addToDatabase: IKey;
|
||||
unsplit: IKey;
|
||||
unsplitAll: IKey;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
7
app/src/types/index.d.ts
vendored
7
app/src/types/index.d.ts
vendored
|
|
@ -216,10 +216,6 @@ interface Window {
|
|||
encode(options: string): string,
|
||||
};
|
||||
pdfjsLib: any;
|
||||
|
||||
dataLayer: any[];
|
||||
|
||||
siyuan: ISiyuan;
|
||||
webkit: {
|
||||
messageHandlers: {
|
||||
openLink: { postMessage: (url: string) => void }
|
||||
|
|
@ -233,6 +229,8 @@ interface Window {
|
|||
toCanvas: (element: Element) => Promise<HTMLCanvasElement>
|
||||
toBlob: (element: Element) => Promise<Blob>
|
||||
};
|
||||
|
||||
siyuan: ISiyuan;
|
||||
JSAndroid: {
|
||||
returnDesktop(): void
|
||||
openExternal(url: string): void
|
||||
|
|
@ -462,6 +460,7 @@ interface ISiyuan {
|
|||
storage?: {
|
||||
[key: string]: any
|
||||
},
|
||||
closedTabs: string[]
|
||||
transactions?: {
|
||||
protyle: IProtyle,
|
||||
doOperations: IOperation[],
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@ class App {
|
|||
layout: {},
|
||||
dialogs: [],
|
||||
blockPanels: [],
|
||||
closedTabs: [],
|
||||
ctrlIsPressed: false,
|
||||
altIsPressed: false,
|
||||
ws: new Model({
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue