summaryrefslogtreecommitdiff
path: root/gtk2_ardour/canvas-program-change.cc
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2010-12-20 13:30:31 +0000
committerCarl Hetherington <carl@carlh.net>2010-12-20 13:30:31 +0000
commit3ec58e478ccd0a495e6fb916de8da0b26d5d15b5 (patch)
tree35f4127eeac90fa3a38f6a84edaefa8139ba7803 /gtk2_ardour/canvas-program-change.cc
parent570ed69d2a791486a907b62ee2336a3953a7a1c0 (diff)
Allow deletion of program changes in the same way as notes.
git-svn-id: svn://localhost/ardour2/branches/3.0@8304 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/canvas-program-change.cc')
-rw-r--r--gtk2_ardour/canvas-program-change.cc25
1 files changed, 16 insertions, 9 deletions
diff --git a/gtk2_ardour/canvas-program-change.cc b/gtk2_ardour/canvas-program-change.cc
index b48d7b33ba..4e178819f2 100644
--- a/gtk2_ardour/canvas-program-change.cc
+++ b/gtk2_ardour/canvas-program-change.cc
@@ -2,6 +2,7 @@
#include <glibmm/regex.h>
+#include "gtkmm2ext/keyboard.h"
#include "ardour/midi_patch_manager.h"
#include "ardour_ui.h"
#include "midi_region_view.h"
@@ -108,22 +109,27 @@ CanvasProgramChange::on_patch_menu_selected(const PatchPrimaryKey& key)
}
bool
-CanvasProgramChange::on_event(GdkEvent* ev)
+CanvasProgramChange::on_event (GdkEvent* ev)
{
switch (ev->type) {
case GDK_BUTTON_PRESS:
- switch (ev->button.button) {
- case 1:
- {
- /* XXX: icky dcast */
- Editor* e = dynamic_cast<Editor*> (&_region.get_time_axis_view().editor());
- if (e->current_mouse_mode() == Editing::MouseObject && e->internal_editing()) {
+ {
+ /* XXX: icky dcast */
+ Editor* e = dynamic_cast<Editor*> (&_region.get_time_axis_view().editor());
+ if (e->current_mouse_mode() == Editing::MouseObject && e->internal_editing()) {
+
+ if (Gtkmm2ext::Keyboard::is_delete_event (&ev->button)) {
+
+ _region.delete_program_change (this);
+ return true;
+
+ } else if (ev->button.button == 1) {
e->drags()->set (new ProgramChangeDrag (e, this, &_region), ev);
return true;
}
}
- case 3:
- // lazy init
+
+ if (ev->button.button == 3) {
if (!_popup_initialized) {
initialize_popup_menus();
_popup_initialized = true;
@@ -132,6 +138,7 @@ CanvasProgramChange::on_event(GdkEvent* ev)
return true;
}
break;
+ }
case GDK_KEY_PRESS:
switch (ev->key.keyval) {