summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2011-08-15 15:08:37 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2011-08-15 15:08:37 +0000
commitb5004978123a404a41fc3128240f81ee70d3c02c (patch)
treeb395c5d44c5bb2ff13d35d6c6a929b223880f46d /gtk2_ardour
parent82f8214277dbc06532beb9b42a96ac155af6c5f2 (diff)
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
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/editor.h2
-rw-r--r--gtk2_ardour/editor_canvas_events.cc50
2 files changed, 52 insertions, 0 deletions
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<Gdk::DragContext> 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;
+}