diff --git a/docs/KEYBINDINGS.md b/docs/KEYBINDINGS.md index a1a699e6..2784bed9 100644 --- a/docs/KEYBINDINGS.md +++ b/docs/KEYBINDINGS.md @@ -135,6 +135,7 @@ Here is an example: | `view.focus-mode` | CmdOrCtrl+Shift+J | Enable focus mode | | `view.toggle-sidebar` | CmdOrCtrl+J | Toggle sidebar | | `view.toggle-tabbar` | CmdOrCtrl+Alt+B | Toggle tabbar | +| `view.toggle-toc` . | CmdOrCtrl+K | Toggle table of contents | | `view.toggle-dev-tools` | CmdOrCtrl+Alt+I | Toggle developer tools (debug mode only) | | `view.dev-reload` | CmdOrCtrl+R | Reload window (debug mode only) | diff --git a/src/main/keyboard/shortcutHandler.js b/src/main/keyboard/shortcutHandler.js index fb7bfd8a..847ed934 100644 --- a/src/main/keyboard/shortcutHandler.js +++ b/src/main/keyboard/shortcutHandler.js @@ -101,6 +101,7 @@ class Keybindings { ['view.typewriter-mode', 'CmdOrCtrl+Alt+T'], ['view.focus-mode', 'CmdOrCtrl+Shift+J'], ['view.toggle-sidebar', 'CmdOrCtrl+J'], + ['view.toggle-toc', 'CmdOrCtrl+K'], ['view.toggle-tabbar', 'CmdOrCtrl+Alt+B'], ['view.toggle-dev-tools', 'CmdOrCtrl+Alt+I'], ['view.dev-reload', 'CmdOrCtrl+R'], diff --git a/src/main/menu/actions/view.js b/src/main/menu/actions/view.js index 532d8f57..8ea4624e 100644 --- a/src/main/menu/actions/view.js +++ b/src/main/menu/actions/view.js @@ -22,9 +22,9 @@ export const typeMode = (win, type, item) => { } } -export const layout = (item, win, type) => { +export const layout = (item, win, type, value) => { if (win && win.webContents) { - win.webContents.send('mt::set-view-layout', { [type]: item.checked }) + win.webContents.send('mt::set-view-layout', { [type]: value || item.checked }) } } diff --git a/src/main/menu/templates/view.js b/src/main/menu/templates/view.js index 2d8a0528..dfa23bd1 100755 --- a/src/main/menu/templates/view.js +++ b/src/main/menu/templates/view.js @@ -81,6 +81,13 @@ export default function (keybindings) { actions.layout(item, browserWindow, 'showTabBar') } + }, { + label: 'Toggle Table of Contents', + id: 'tocMenuItem', + accelerator: keybindings.getAccelerator('view.toggle-toc'), + click (_, browserWindow) { + actions.layout(null, browserWindow, 'rightColumn', 'toc') + } }, { type: 'separator' }] diff --git a/src/renderer/store/layout.js b/src/renderer/store/layout.js index 5d27feac..8bf95131 100644 --- a/src/renderer/store/layout.js +++ b/src/renderer/store/layout.js @@ -33,9 +33,17 @@ const mutations = { } const actions = { - LISTEN_FOR_LAYOUT ({ commit }) { + LISTEN_FOR_LAYOUT ({ state, commit }) { ipcRenderer.on('mt::set-view-layout', (e, layout) => { - commit('SET_LAYOUT', layout) + if (layout.rightColumn) { + commit('SET_LAYOUT', { + ...layout, + rightColumn: layout.rightColumn === state.rightColumn ? '' : layout.rightColumn, + showSideBar: true + }) + } else { + commit('SET_LAYOUT', layout) + } }) bus.$on('view:toggle-view-layout-entry', entryName => {