diff --git a/src/app/PortWidget.cpp b/src/app/PortWidget.cpp index 1b8a450c..4ec02bb6 100644 --- a/src/app/PortWidget.cpp +++ b/src/app/PortWidget.cpp @@ -130,12 +130,15 @@ void PortWidget::createContextMenu() { ui::Menu* menu = createMenu(); WeakPtr weakThis = this; - menu->addChild(createMenuItem("Delete top cable", "", + CableWidget* cw = APP->scene->rack->getTopCable(this); + + menu->addChild(createMenuItem("Delete top cable", RACK_MOD_SHIFT_NAME "+click", [=]() { if (!weakThis) return; weakThis->deleteTopCableAction(); - } + }, + !cw )); // TODO @@ -180,6 +183,14 @@ void PortWidget::onButton(const ButtonEvent& e) { if (e.action == GLFW_PRESS && e.button == GLFW_MOUSE_BUTTON_RIGHT) { createContextMenu(); e.consume(this); + return; + } + + if (e.action == GLFW_PRESS && e.button == GLFW_MOUSE_BUTTON_LEFT && (e.mods & RACK_MOD_MASK) == GLFW_MOD_SHIFT) { + deleteTopCableAction(); + // Consume null so onDragStart isn't triggered + e.consume(NULL); + return; } }