diff options
author | David Robillard <d@drobilla.net> | 2007-08-05 00:50:54 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2007-08-05 00:50:54 +0000 |
commit | 873ab9bbb14a1be16f15a0e2feff66c6f227c85d (patch) | |
tree | 40b1b521bf82cc447b66fde55d367bf5d8774761 /gtk2_ardour | |
parent | c0e916d4dacf544e06317862ebca5d3707f6d269 (diff) |
Selection deleting.
git-svn-id: svn://localhost/ardour2/trunk@2246 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/midi_region_view.cc | 23 | ||||
-rw-r--r-- | gtk2_ardour/midi_region_view.h | 1 |
2 files changed, 23 insertions, 1 deletions
diff --git a/gtk2_ardour/midi_region_view.cc b/gtk2_ardour/midi_region_view.cc index aa032af257..64f76d435c 100644 --- a/gtk2_ardour/midi_region_view.cc +++ b/gtk2_ardour/midi_region_view.cc @@ -48,6 +48,7 @@ #include "utils.h" #include "midi_util.h" #include "gui_thread.h" +#include "keyboard.h" #include "i18n.h" @@ -143,8 +144,10 @@ MidiRegionView::canvas_event(GdkEvent* ev) break; case GDK_KEY_RELEASE: - if (_command_mode == Remove && ev->key.keyval == GDK_Delete) + if (_command_mode == Remove && ev->key.keyval == GDK_Delete) { + delete_selection(); apply_command(); + } break; case GDK_BUTTON_PRESS: @@ -154,6 +157,12 @@ MidiRegionView::canvas_event(GdkEvent* ev) //cerr << "PRESSED: " << press_button << endl; return true; + case GDK_ENTER_NOTIFY: + /* FIXME: do this on switch to note tool, too, if the pointer is already in */ + Keyboard::magic_widget_grab_focus(); + group->grab_focus(); + break; + case GDK_MOTION_NOTIFY: event_x = ev->motion.x; event_y = ev->motion.y; @@ -580,6 +589,18 @@ MidiRegionView::add_note (const MidiModel::Note& note) } void +MidiRegionView::delete_selection() +{ + assert(_delta_command); + + for (Selection::iterator i = _selection.begin(); i != _selection.end(); ++i) + if ((*i)->selected()) + _delta_command->remove(*(*i)->note()); + + _selection.clear(); +} + +void MidiRegionView::clear_selection_except(ArdourCanvas::CanvasMidiEvent* ev) { for (Selection::iterator i = _selection.begin(); i != _selection.end(); ++i) diff --git a/gtk2_ardour/midi_region_view.h b/gtk2_ardour/midi_region_view.h index fd341ffe55..6bf6057342 100644 --- a/gtk2_ardour/midi_region_view.h +++ b/gtk2_ardour/midi_region_view.h @@ -135,6 +135,7 @@ class MidiRegionView : public RegionView void unique_select(ArdourCanvas::CanvasMidiEvent* ev); void note_selected(ArdourCanvas::CanvasMidiEvent* ev, bool add); void note_deselected(ArdourCanvas::CanvasMidiEvent* ev, bool add); + void delete_selection(); size_t selection_size() { return _selection.size(); } protected: |