This commit is contained in:
zadam 2020-01-19 22:05:45 +01:00
parent 423a70d102
commit 9bc1f5af45
4 changed files with 42 additions and 45 deletions

View File

@ -382,32 +382,4 @@ class AppContext {
const appContext = new AppContext(); const appContext = new AppContext();
keyboardActionService.setGlobalActionHandler('OpenNewTab', () => {
appContext.openEmptyTab();
});
keyboardActionService.setGlobalActionHandler('CloseActiveTab', () => {
if (this.tabRow.activeTabEl) {
this.tabRow.removeTab(this.tabRow.activeTabId);
}
});
keyboardActionService.setGlobalActionHandler('ActivateNextTab', () => {
const nextTab = this.tabRow.nextTabEl;
if (nextTab) {
// FIXME
this.tabRow.activateTab(nextTab);
}
});
keyboardActionService.setGlobalActionHandler('ActivatePreviousTab', () => {
const prevTab = this.tabRow.previousTabEl;
if (prevTab) {
// FIXME
this.tabRow.activateTab(prevTab);
}
});
export default appContext; export default appContext;

View File

@ -1,11 +1,20 @@
import server from "./server.js"; import server from "./server.js";
import utils from "./utils.js"; import utils from "./utils.js";
import appContext from "./app_context.js";
const keyboardActionRepo = {}; const keyboardActionRepo = {};
const keyboardActionsLoaded = server.get('keyboard-actions').then(actions => { const keyboardActionsLoaded = server.get('keyboard-actions').then(actions => {
for (const action of actions) { for (const action of actions) {
keyboardActionRepo[action.actionName] = action; keyboardActionRepo[action.actionName] = action;
for (const shortcut of action.effectiveShortcuts || []) {
if (shortcut && !shortcut.startsWith("global:")) { // global shortcuts should be handled in the electron code
const eventName = action.actionName.charAt(0).toUpperCase() + action.actionName.slice(1);
utils.bindGlobalShortcut(shortcut, appContext.trigger(eventName));
}
}
} }
}); });
@ -20,21 +29,7 @@ server.get('keyboard-shortcuts-for-notes').then(shortcutForNotes => {
}); });
function setGlobalActionHandler(actionName, handler) { function setGlobalActionHandler(actionName, handler) {
keyboardActionsLoaded.then(() => { console.log("Useless handler for " + actionName);
const action = keyboardActionRepo[actionName];
if (!action) {
throw new Error(`Cannot find keyboard action '${actionName}'`);
}
action.handler = handler;
for (const shortcut of action.effectiveShortcuts) {
if (shortcut && !shortcut.startsWith("global:")) { // global shortcuts should be handled in the electron code
utils.bindGlobalShortcut(shortcut, handler);
}
}
});
} }
function setElementActionHandler($el, actionName, handler) { function setElementActionHandler($el, actionName, handler) {
@ -108,6 +103,34 @@ function updateDisplayedShortcuts($container) {
$(() => updateDisplayedShortcuts($(document))); $(() => updateDisplayedShortcuts($(document)));
setGlobalActionHandler('OpenNewTab', () => {
appContext.openEmptyTab();
});
setGlobalActionHandler('CloseActiveTab', () => {
if (this.tabRow.activeTabEl) {
this.tabRow.removeTab(this.tabRow.activeTabId);
}
});
setGlobalActionHandler('ActivateNextTab', () => {
const nextTab = this.tabRow.nextTabEl;
if (nextTab) {
// FIXME
this.tabRow.activateTab(nextTab);
}
});
setGlobalActionHandler('ActivatePreviousTab', () => {
const prevTab = this.tabRow.previousTabEl;
if (prevTab) {
// FIXME
this.tabRow.activateTab(prevTab);
}
});
export default { export default {
setGlobalActionHandler, setGlobalActionHandler,
setElementActionHandler, setElementActionHandler,

View File

@ -200,7 +200,9 @@ function noteChanged() {
// this makes sure that when user e.g. reloads the page or navigates away from the page, the note's content is saved // this makes sure that when user e.g. reloads the page or navigates away from the page, the note's content is saved
// this sends the request asynchronously and doesn't wait for result // this sends the request asynchronously and doesn't wait for result
// FIXME // FIXME
$(window).on('beforeunload', () => { saveNotesIfChanged(); }); // don't convert to short form, handler doesn't like returned promise $(window).on('beforeunload', () => {
//saveNotesIfChanged();
});
export default { export default {
reload, reload,

View File

@ -636,7 +636,7 @@ export default class TabRowWidget extends BasicWidget {
const {note} = this.appContext.getTabContextById(tabId); const {note} = this.appContext.getTabContextById(tabId);
if (!note) { if (!note || !$tab.length) {
return; return;
} }