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 => {