summaryrefslogtreecommitdiff
path: root/gtk2_ardour/canvas-midi-event.cc
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2007-08-09 20:50:56 +0000
committerDavid Robillard <d@drobilla.net>2007-08-09 20:50:56 +0000
commit8eded9b7bcabc08083413139ac3a89812483881f (patch)
tree04aada46bef341d3e96e568352cd93b4a277143f /gtk2_ardour/canvas-midi-event.cc
parent08f3fa25c98f6d95ae74056369cd1b1f2055588a (diff)
Make MIDI tools actually do something. Sorta. Sometimes.
When the moon is right. Cosmic radiation may be a factor. Prayer may not be an entirely bad idea, just in case. git-svn-id: svn://localhost/ardour2/trunk@2283 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/canvas-midi-event.cc')
-rw-r--r--gtk2_ardour/canvas-midi-event.cc27
1 files changed, 18 insertions, 9 deletions
diff --git a/gtk2_ardour/canvas-midi-event.cc b/gtk2_ardour/canvas-midi-event.cc
index 1e8e313684..625d16ffd5 100644
--- a/gtk2_ardour/canvas-midi-event.cc
+++ b/gtk2_ardour/canvas-midi-event.cc
@@ -73,7 +73,9 @@ CanvasMidiEvent::on_event(GdkEvent* ev)
switch (ev->type) {
case GDK_KEY_PRESS:
+ cerr << "EV KEY\n";
if (_note && ev->key.keyval == GDK_Delete) {
+ cerr << "EV DELETE KEY\n";
selected(true);
_region.start_remove_command();
_region.command_remove_note(this);
@@ -92,8 +94,8 @@ CanvasMidiEvent::on_event(GdkEvent* ev)
if (select_mod) {
_region.note_selected(this, true);
}
- Keyboard::magic_widget_grab_focus();
_item->grab_focus();
+ Keyboard::magic_widget_grab_focus();
_region.note_entered(this);
break;
@@ -123,6 +125,7 @@ CanvasMidiEvent::on_event(GdkEvent* ev)
last_y = event_y;
drag_delta_x = 0;
drag_delta_note = 0;
+ _region.note_selected(this, true);
}
return true;
@@ -178,14 +181,20 @@ CanvasMidiEvent::on_event(GdkEvent* ev)
switch (_state) {
case Pressed: // Clicked
- _state = None;
-
- if (_selected && !select_mod && _region.selection_size() > 1)
- _region.unique_select(this);
- else if (_selected)
- _region.note_deselected(this, select_mod);
- else
- _region.note_selected(this, select_mod);
+ if (_region.midi_view()->editor.current_midi_edit_mode() == Editing::MidiEditSelect) {
+ _state = None;
+
+ if (_selected && !select_mod && _region.selection_size() > 1)
+ _region.unique_select(this);
+ else if (_selected)
+ _region.note_deselected(this, select_mod);
+ else
+ _region.note_selected(this, select_mod);
+ } else if (_region.midi_view()->editor.current_midi_edit_mode() == Editing::MidiEditErase) {
+ _region.start_remove_command();
+ _region.command_remove_note(this);
+ _region.apply_command();
+ }
return true;
case Dragging: // Dropped