Open folder notes with ctrl/alt only

This commit is contained in:
Lost Paul 2023-12-30 18:03:36 +01:00
parent 1fb8ead51e
commit 2917ff57e0
3 changed files with 50 additions and 1 deletions

View file

@ -39,6 +39,7 @@ export async function handleFolderClick(event: MouseEvent, plugin: FolderNotesPl
const folderPath = event.target.parentElement?.getAttribute('data-path');
if (!folderPath) { return; }
const excludedFolder = getExcludedFolder(plugin, folderPath);
if (excludedFolder?.disableFolderNote) {
event.target.onclick = null;
@ -50,8 +51,19 @@ export async function handleFolderClick(event: MouseEvent, plugin: FolderNotesPl
}
const folderNote = getFolderNote(plugin, folderPath);
if (folderNote) {
return openFolderNote(plugin, folderNote, event);
if (plugin.settings.openByClick) {
return openFolderNote(plugin, folderNote, event);
} else if (plugin.settings.openWithCtrl && Keymap.isModEvent(event) === 'tab') {
return openFolderNote(plugin, folderNote, event);
} else if (plugin.settings.openWithAlt && event.altKey) {
return openFolderNote(plugin, folderNote, event);
} else {
if (plugin.settings.enableCollapsing) return;
event.target.parentElement?.click()
return;
}
} else if (event.altKey || Keymap.isModEvent(event) === 'tab') {
if ((plugin.settings.altKey && event.altKey) || (plugin.settings.ctrlKey && Keymap.isModEvent(event) === 'tab')) {
await createFolderNote(plugin, folderPath, true, undefined, true);
@ -59,7 +71,11 @@ export async function handleFolderClick(event: MouseEvent, plugin: FolderNotesPl
plugin.removeCSSClassFromEL(folderPath, 'has-not-folder-note');
return;
}
} else if (!folderNote) {
if (plugin.settings.enableCollapsing) return;
return event.target.parentElement?.click();
}
event.target.onclick = null;
event.target.click();
}

View file

@ -215,6 +215,33 @@ export async function renderGeneral(settingsTab: SettingsTab) {
settingsTab.display();
});
});
new Setting(containerEl)
.setName('Key for opening folder note')
.setDesc('Select the combination to open a folder note')
.addDropdown((dropdown) => {
dropdown.addOption('click', 'Mouse Click');
if (!Platform.isMacOS) {
dropdown.addOption('ctrl', 'Ctrl + Click');
} else {
dropdown.addOption('ctrl', 'Cmd + Click');
}
dropdown.addOption('alt', 'Alt + Click');
if (settingsTab.plugin.settings.openByClick) {
dropdown.setValue('click');
} else if (settingsTab.plugin.settings.openWithCtrl) {
dropdown.setValue('ctrl');
} else {
dropdown.setValue('alt');
}
dropdown.onChange(async (value) => {
settingsTab.plugin.settings.openByClick = value === 'click';
settingsTab.plugin.settings.openWithCtrl = value === 'ctrl';
settingsTab.plugin.settings.openWithAlt = value === 'alt';
await settingsTab.plugin.saveSettings();
settingsTab.display();
});
});
}
new Setting(containerEl)

View file

@ -46,6 +46,9 @@ export interface FolderNotesSettings {
cursiveName: boolean;
cursiveNameInPath: boolean;
disableOpenFolderNoteOnClick: boolean;
openByClick: boolean;
openWithCtrl: boolean;
openWithAlt: boolean;
}
export const DEFAULT_SETTINGS: FolderNotesSettings = {
@ -101,6 +104,9 @@ export const DEFAULT_SETTINGS: FolderNotesSettings = {
cursiveName: false,
cursiveNameInPath: false,
disableOpenFolderNoteOnClick: false,
openByClick: true,
openWithCtrl: false,
openWithAlt: false,
};
export class SettingsTab extends PluginSettingTab {