Selection deleting.

git-svn-id: svn://localhost/ardour2/trunk@2246 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
David Robillard 2007-08-05 00:50:54 +00:00
parent c0e916d4da
commit 873ab9bbb1
2 changed files with 23 additions and 1 deletions

View file

@ -48,6 +48,7 @@
#include "utils.h" #include "utils.h"
#include "midi_util.h" #include "midi_util.h"
#include "gui_thread.h" #include "gui_thread.h"
#include "keyboard.h"
#include "i18n.h" #include "i18n.h"
@ -143,8 +144,10 @@ MidiRegionView::canvas_event(GdkEvent* ev)
break; break;
case GDK_KEY_RELEASE: 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(); apply_command();
}
break; break;
case GDK_BUTTON_PRESS: case GDK_BUTTON_PRESS:
@ -154,6 +157,12 @@ MidiRegionView::canvas_event(GdkEvent* ev)
//cerr << "PRESSED: " << press_button << endl; //cerr << "PRESSED: " << press_button << endl;
return true; 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: case GDK_MOTION_NOTIFY:
event_x = ev->motion.x; event_x = ev->motion.x;
event_y = ev->motion.y; event_y = ev->motion.y;
@ -579,6 +588,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 void
MidiRegionView::clear_selection_except(ArdourCanvas::CanvasMidiEvent* ev) MidiRegionView::clear_selection_except(ArdourCanvas::CanvasMidiEvent* ev)
{ {

View file

@ -135,6 +135,7 @@ class MidiRegionView : public RegionView
void unique_select(ArdourCanvas::CanvasMidiEvent* ev); void unique_select(ArdourCanvas::CanvasMidiEvent* ev);
void note_selected(ArdourCanvas::CanvasMidiEvent* ev, bool add); void note_selected(ArdourCanvas::CanvasMidiEvent* ev, bool add);
void note_deselected(ArdourCanvas::CanvasMidiEvent* ev, bool add); void note_deselected(ArdourCanvas::CanvasMidiEvent* ev, bool add);
void delete_selection();
size_t selection_size() { return _selection.size(); } size_t selection_size() { return _selection.size(); }
protected: protected: