From b5004978123a404a41fc3128240f81ee70d3c02c Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 15 Aug 2011 15:08:37 +0000 Subject: [PATCH] Delete key can now be used to remove tempo/meter markers git-svn-id: svn://localhost/ardour2/branches/3.0@9996 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/editor.h | 2 ++ gtk2_ardour/editor_canvas_events.cc | 50 +++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index e9960b3938..c4e99ce1fd 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -1055,6 +1055,8 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD bool motion_handler (ArdourCanvas::Item*, GdkEvent*, bool from_autoscroll = false); bool enter_handler (ArdourCanvas::Item*, GdkEvent*, ItemType); bool leave_handler (ArdourCanvas::Item*, GdkEvent*, ItemType); + bool key_press_handler (ArdourCanvas::Item*, GdkEvent*, ItemType); + bool key_release_handler (ArdourCanvas::Item*, GdkEvent*, ItemType); Gtkmm2ext::Bindings* button_bindings; XMLNode* button_settings () const; diff --git a/gtk2_ardour/editor_canvas_events.cc b/gtk2_ardour/editor_canvas_events.cc index 5dbc94a897..014c925f7d 100644 --- a/gtk2_ardour/editor_canvas_events.cc +++ b/gtk2_ardour/editor_canvas_events.cc @@ -212,6 +212,14 @@ Editor::typed_event (ArdourCanvas::Item* item, GdkEvent *event, ItemType type) ret = leave_handler (item, event, type); break; + case GDK_KEY_PRESS: + ret = key_press_handler (item, event, type); + break; + + case GDK_KEY_RELEASE: + ret = key_release_handler (item, event, type); + break; + default: break; } @@ -1074,3 +1082,45 @@ Editor::track_canvas_drag_motion (Glib::RefPtr const & /*c*/, return true; } + +bool +Editor::key_press_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType type) +{ + return false; +} + +bool +Editor::key_release_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType type) +{ + + bool handled = false; + + switch (type) { + case TempoMarkerItem: + switch (event->key.keyval) { + case GDK_Delete: + remove_tempo_marker (item); + handled = true; + break; + default: + break; + } + break; + + case MeterMarkerItem: + switch (event->key.keyval) { + case GDK_Delete: + remove_meter_marker (item); + handled = true; + break; + default: + break; + } + break; + + default: + break; + } + + return handled; +}