diff --git a/include/app/RackWidget.hpp b/include/app/RackWidget.hpp index 159fd8eb..8665e67d 100644 --- a/include/app/RackWidget.hpp +++ b/include/app/RackWidget.hpp @@ -71,6 +71,7 @@ struct RackWidget : widget::OpaqueWidget { history::ComplexAction* getModuleDragAction(); void updateModuleSelections(); + void clearModuleSelections(); int getNumSelectedModules(); std::list getSelectedModules(); void resetSelectedModulesAction(); diff --git a/src/app/ModuleWidget.cpp b/src/app/ModuleWidget.cpp index 3f833595..3bba9709 100644 --- a/src/app/ModuleWidget.cpp +++ b/src/app/ModuleWidget.cpp @@ -1088,6 +1088,11 @@ void ModuleWidget::createSelectionContextMenu() { int n = APP->scene->rack->getNumSelectedModules(); menu->addChild(createMenuLabel(string::f("%d selected %s", n, n == 1 ? "module" : "modules"))); + // Deselect + menu->addChild(createMenuItem("Deselect", "", [=]() { + APP->scene->rack->clearModuleSelections(); + })); + // Initialize menu->addChild(createMenuItem("Initialize", RACK_MOD_CTRL_NAME "+I", [=]() { APP->scene->rack->resetSelectedModulesAction(); diff --git a/src/app/RackWidget.cpp b/src/app/RackWidget.cpp index 25dbb670..ad436a93 100644 --- a/src/app/RackWidget.cpp +++ b/src/app/RackWidget.cpp @@ -653,6 +653,12 @@ void RackWidget::updateModuleSelections() { } } +void RackWidget::clearModuleSelections() { + for (ModuleWidget* mw : getModules()) { + mw->selected() = false; + } +} + int RackWidget::getNumSelectedModules() { int count = 0; for (widget::Widget* w : internal->moduleContainer->children) {