diff --git a/libs/vtextedit b/libs/vtextedit index 43ed9543..6a1f3458 160000 --- a/libs/vtextedit +++ b/libs/vtextedit @@ -1 +1 @@ -Subproject commit 43ed95437369d48ff0428661db9ebae711d725e9 +Subproject commit 6a1f34580067158f75f88643f5dd66197f34196d diff --git a/src/core/coreconfig.cpp b/src/core/coreconfig.cpp index e90ca838..c9f37231 100644 --- a/src/core/coreconfig.cpp +++ b/src/core/coreconfig.cpp @@ -43,6 +43,8 @@ void CoreConfig::init(const QJsonObject &p_app, loadShortcuts(appObj, userObj); + m_shortcutLeaderKey = READSTR(QStringLiteral("shortcut_leader_key")); + m_toolBarIconSize = READINT(QStringLiteral("toolbar_icon_size")); if (m_toolBarIconSize <= 0) { m_toolBarIconSize = 18; @@ -73,6 +75,7 @@ QJsonObject CoreConfig::toJson() const obj[QStringLiteral("theme")] = m_theme; obj[QStringLiteral("locale")] = m_locale; obj[QStringLiteral("shortcuts")] = saveShortcuts(); + obj[QStringLiteral("shortcut_leader_key")] = m_shortcutLeaderKey; obj[QStringLiteral("toolbar_icon_size")] = m_toolBarIconSize; obj[QStringLiteral("docks_tabbar_icon_size")] = m_docksTabBarIconSize; obj[QStringLiteral("recover_last_session_on_start")] = m_recoverLastSessionOnStartEnabled; @@ -216,3 +219,8 @@ void CoreConfig::setPerNotebookHistoryEnabled(bool p_enabled) { updateConfig(m_perNotebookHistoryEnabled, p_enabled, this); } + +const QString &CoreConfig::getShortcutLeaderKey() const +{ + return m_shortcutLeaderKey; +} diff --git a/src/core/coreconfig.h b/src/core/coreconfig.h index 30b976ec..f75f8d3b 100644 --- a/src/core/coreconfig.h +++ b/src/core/coreconfig.h @@ -108,6 +108,8 @@ namespace vnotex bool isPerNotebookHistoryEnabled() const; void setPerNotebookHistoryEnabled(bool p_enabled); + const QString &getShortcutLeaderKey() const; + private: friend class MainConfig; @@ -126,6 +128,9 @@ namespace vnotex QString m_shortcuts[Shortcut::MaxShortcut]; + // Leader key of shortcuts defined in m_shortctus. + QString m_shortcutLeaderKey; + // Icon size of MainWindow tool bar. int m_toolBarIconSize = 18; diff --git a/src/data/core/vnotex.json b/src/data/core/vnotex.json index bebd1329..979bac95 100644 --- a/src/data/core/vnotex.json +++ b/src/data/core/vnotex.json @@ -61,6 +61,7 @@ "MoveOneSplitRight" : "Ctrl+G, Shift+L", "OpenLastClosedFile" : "Ctrl+Shift+T" }, + "shortcut_leader_key" : "Ctrl+G", "toolbar_icon_size" : 18, "docks_tabbar_icon_size" : 24, "note_management" : { diff --git a/src/widgets/markdownviewwindow.cpp b/src/widgets/markdownviewwindow.cpp index c2b469e1..f982a13f 100644 --- a/src/widgets/markdownviewwindow.cpp +++ b/src/widgets/markdownviewwindow.cpp @@ -16,6 +16,7 @@ #include #include +#include #include #include #include @@ -205,9 +206,11 @@ void MarkdownViewWindow::handleEditorConfigChange() m_editor->setConfig(config); m_editor->updateFromConfig(); + + updateEditorFromConfig(); } - updateWebViewerConfig(markdownEditorConfig); + updateWebViewerConfig(); } } @@ -354,6 +357,8 @@ void MarkdownViewWindow::setupTextEditor() m_editor->setImageHost(m_imageHost); + updateEditorFromConfig(); + // Connect viewer and editor. connect(adapter(), &MarkdownViewerAdapter::viewerReady, m_editor->getHighlighter(), &vte::PegMarkdownHighlighter::updateHighlight); @@ -958,13 +963,16 @@ void MarkdownViewWindow::scrollDown() } } -void MarkdownViewWindow::updateWebViewerConfig(const MarkdownEditorConfig &p_config) +void MarkdownViewWindow::updateWebViewerConfig() { if (!m_viewer) { return; } - m_viewer->setZoomFactor(p_config.getZoomFactorInReadMode()); + const auto &editorConfig = ConfigMgr::getInst().getEditorConfig(); + const auto &markdownEditorConfig = editorConfig.getMarkdownEditorConfig(); + + m_viewer->setZoomFactor(markdownEditorConfig.getZoomFactorInReadMode()); } void MarkdownViewWindow::zoom(bool p_zoomIn) @@ -1438,3 +1446,13 @@ void MarkdownViewWindow::handleExternalCodeBlockHighlightRequest(int p_idx, quin adapter()->highlightCodeBlock(p_idx, p_timeStamp, p_text); } + +void MarkdownViewWindow::updateEditorFromConfig() +{ + const auto &coreConfig = ConfigMgr::getInst().getCoreConfig(); + + { + vte::Key leaderKey(coreConfig.getShortcutLeaderKey()); + m_editor->setLeaderKeyToSkip(leaderKey.m_key, leaderKey.m_modifiers); + } +} diff --git a/src/widgets/markdownviewwindow.h b/src/widgets/markdownviewwindow.h index 9136e640..8b4d47f7 100644 --- a/src/widgets/markdownviewwindow.h +++ b/src/widgets/markdownviewwindow.h @@ -151,7 +151,9 @@ namespace vnotex void setupOutlineProvider(); - void updateWebViewerConfig(const MarkdownEditorConfig &p_config); + void updateEditorFromConfig(); + + void updateWebViewerConfig(); void setModeInternal(ViewWindowMode p_mode, bool p_syncBuffer); diff --git a/src/widgets/textviewwindow.cpp b/src/widgets/textviewwindow.cpp index c5af5358..8e956c51 100644 --- a/src/widgets/textviewwindow.cpp +++ b/src/widgets/textviewwindow.cpp @@ -8,6 +8,7 @@ #include #include +#include #include "textviewwindowhelper.h" #include "toolbarhelper.h" @@ -245,11 +246,18 @@ void TextViewWindow::handleFindAndReplaceWidgetClosed() void TextViewWindow::updateEditorFromConfig() { + const auto &coreConfig = ConfigMgr::getInst().getCoreConfig(); const auto &editorConfig = ConfigMgr::getInst().getEditorConfig(); const auto &textEditorConfig = editorConfig.getTextEditorConfig(); + if (textEditorConfig.getZoomDelta() != 0) { m_editor->zoom(textEditorConfig.getZoomDelta()); } + + { + vte::Key leaderKey(coreConfig.getShortcutLeaderKey()); + m_editor->setLeaderKeyToSkip(leaderKey.m_key, leaderKey.m_modifiers); + } } void TextViewWindow::openTwice(const QSharedPointer &p_paras)