summaryrefslogtreecommitdiffstats
path: root/src/libs/gui/PatchCanvas.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/gui/PatchCanvas.cpp')
-rw-r--r--src/libs/gui/PatchCanvas.cpp24
1 files changed, 20 insertions, 4 deletions
diff --git a/src/libs/gui/PatchCanvas.cpp b/src/libs/gui/PatchCanvas.cpp
index e209a43f..cbe931ab 100644
--- a/src/libs/gui/PatchCanvas.cpp
+++ b/src/libs/gui/PatchCanvas.cpp
@@ -393,6 +393,8 @@ PatchCanvas::canvas_event(GdkEvent* event)
{
assert(event);
+ static bool control_modded = false;
+
switch (event->type) {
case GDK_BUTTON_PRESS:
@@ -403,11 +405,25 @@ PatchCanvas::canvas_event(GdkEvent* event)
}
break;
- /*case GDK_KEY_PRESS:
- if (event->key.keyval == GDK_Delete)
- destroy_selected();
+ case GDK_KEY_PRESS:
+ if (event->key.keyval == GDK_Delete) {
+ destroy_selection();
+ } else if (event->key.keyval == GDK_Control_L || event->key.keyval == GDK_Control_R) {
+ if (_patch->get_editable() == true) {
+ control_modded = true;
+ _patch->set_editable(false);
+ }
+ }
+ break;
+
+ case GDK_KEY_RELEASE:
+ if (event->key.keyval == GDK_Control_L || event->key.keyval == GDK_Control_R) {
+ if (_patch->get_editable() == false &&control_modded) {
+ control_modded = false;
+ _patch->set_editable(true);
+ }
+ }
break;
- */
default:
break;