diff --git a/src/core/coreconfig.h b/src/core/coreconfig.h index 188fa446..83b4ad87 100644 --- a/src/core/coreconfig.h +++ b/src/core/coreconfig.h @@ -69,6 +69,8 @@ namespace vnotex MoveOneSplitRight, OpenLastClosedFile, UnitedEntry, + Copy, + Paste, MaxShortcut }; Q_ENUM(Shortcut) diff --git a/src/data/core/vnotex.json b/src/data/core/vnotex.json index 051ec43a..703a3174 100644 --- a/src/data/core/vnotex.json +++ b/src/data/core/vnotex.json @@ -60,7 +60,9 @@ "MoveOneSplitUp" : "Ctrl+G, Shift+K", "MoveOneSplitRight" : "Ctrl+G, Shift+L", "OpenLastClosedFile" : "Ctrl+Shift+T", - "UnitedEntry" : "Ctrl+G, G" + "UnitedEntry" : "Ctrl+G, G", + "Copy" : "Ctrl+C", + "Paste" : "Ctrl+V" }, "file_type_suffixes" : [ { diff --git a/src/widgets/notebooknodeexplorer.cpp b/src/widgets/notebooknodeexplorer.cpp index d89b8b5b..3683e27b 100644 --- a/src/widgets/notebooknodeexplorer.cpp +++ b/src/widgets/notebooknodeexplorer.cpp @@ -2163,6 +2163,15 @@ void NotebookNodeExplorer::addOpenWithMenu(QMenu *p_menu, bool p_master) }); } +// Shortcut auxiliary, it can also be used to determine the browser. +bool NotebookNodeExplorer::isActionFromMaster() const +{ + if (!isCombinedExploreMode()) { + return m_masterExplorer->hasFocus(); + } + return true; +} + void NotebookNodeExplorer::setupShortcuts() { const auto &coreConfig = ConfigMgr::getInst().getCoreConfig(); @@ -2173,15 +2182,31 @@ void NotebookNodeExplorer::setupShortcuts() if (shortcut) { connect(shortcut, &QShortcut::activated, this, [this]() { - bool isMaster = true; - if (!isCombinedExploreMode()) { - isMaster = m_masterExplorer->hasFocus(); - } - openSelectedNodesWithProgram(QString(), isMaster); + openSelectedNodesWithProgram(QString(), isActionFromMaster()); }); } } + // Copy + { + auto shortcut = WidgetUtils::createShortcut(coreConfig.getShortcut(CoreConfig::Copy), this); + if (shortcut) { + connect(shortcut, &QShortcut::activated, + this, [this]() { + copySelectedNodes(false, isActionFromMaster()); + }); + } + } + + // Paste + { + auto shortcut = WidgetUtils::createShortcut(coreConfig.getShortcut(CoreConfig::Paste), this); + if (shortcut) { + connect(shortcut, &QShortcut::activated, + this, &NotebookNodeExplorer::pasteNodesFromClipboard); + } + } + const auto &sessionConfig = ConfigMgr::getInst().getSessionConfig(); for (const auto &pro : sessionConfig.getExternalPrograms()) { auto shortcut = WidgetUtils::createShortcut(pro.m_shortcut, this); diff --git a/src/widgets/notebooknodeexplorer.h b/src/widgets/notebooknodeexplorer.h index 6bb83a9f..eda0a5d8 100644 --- a/src/widgets/notebooknodeexplorer.h +++ b/src/widgets/notebooknodeexplorer.h @@ -176,6 +176,8 @@ namespace vnotex void setupUI(); + bool isActionFromMaster() const; + void setupShortcuts(); void setupMasterExplorer(QWidget *p_parent = nullptr);