summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2007-08-05 00:50:54 +0000
committerDavid Robillard <d@drobilla.net>2007-08-05 00:50:54 +0000
commit873ab9bbb14a1be16f15a0e2feff66c6f227c85d (patch)
tree40b1b521bf82cc447b66fde55d367bf5d8774761 /gtk2_ardour
parentc0e916d4dacf544e06317862ebca5d3707f6d269 (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.cc23
-rw-r--r--gtk2_ardour/midi_region_view.h1
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: