summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/pianokeyboard.cc22
-rw-r--r--gtk2_ardour/pianokeyboard.h1
2 files changed, 9 insertions, 14 deletions
diff --git a/gtk2_ardour/pianokeyboard.cc b/gtk2_ardour/pianokeyboard.cc
index d7635cf3c6..9c56ae8a0e 100644
--- a/gtk2_ardour/pianokeyboard.cc
+++ b/gtk2_ardour/pianokeyboard.cc
@@ -556,7 +556,7 @@ APianoKeyboard::on_key_press_event (GdkEventKey* event)
return false;
}
if (note == 129) {
- toggle_sustain ();
+ sustain_press ();
return true;
}
@@ -582,14 +582,20 @@ APianoKeyboard::on_key_release_event (GdkEventKey* event)
return false;
}
- if (key_binding (key) == 128) {
+ int note = key_binding (key);
+
+ if (note == 128) {
Rest (); /* EMIT SIGNAL */
return true;
}
+ if (note == 129) {
+ sustain_release ();
+ return true;
+ }
std::map<std::string, int>::const_iterator kv = _note_stack.find (key);
if (kv == _note_stack.end ()) {
- return key_binding (key) != -1;
+ return note != -1;
}
release_key (kv->second);
@@ -927,16 +933,6 @@ APianoKeyboard::set_velocities (int min_vel, int max_vel, int key_vel)
}
void
-APianoKeyboard::toggle_sustain ()
-{
- if (_sustain_new_notes) {
- sustain_release ();
- } else {
- sustain_press ();
- }
-}
-
-void
APianoKeyboard::sustain_press ()
{
if (_sustain_new_notes) {
diff --git a/gtk2_ardour/pianokeyboard.h b/gtk2_ardour/pianokeyboard.h
index 56c2d2cdf1..2b12befe73 100644
--- a/gtk2_ardour/pianokeyboard.h
+++ b/gtk2_ardour/pianokeyboard.h
@@ -79,7 +79,6 @@ private:
void queue_note_draw (int note);
- void toggle_sustain ();
void press_key (int key, int vel);
void release_key (int key);
void stop_sustained_notes ();