diff options
Diffstat (limited to 'gtk2_ardour/editor_mouse.cc')
-rw-r--r-- | gtk2_ardour/editor_mouse.cc | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc index 4b4ed86164..b652d129f6 100644 --- a/gtk2_ardour/editor_mouse.cc +++ b/gtk2_ardour/editor_mouse.cc @@ -49,6 +49,7 @@ #include "keyboard.h" #include "editing.h" #include "rgb_macros.h" +#include "control_point_dialog.h" #include <ardour/types.h> #include <ardour/profile.h> @@ -1071,6 +1072,10 @@ Editor::button_release_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemT } break; + case ControlPointItem: + edit_control_point (item); + break; + default: break; } @@ -3203,6 +3208,28 @@ Editor::control_point_drag_finished_callback (ArdourCanvas::Item* item, GdkEvent } void +Editor::edit_control_point (ArdourCanvas::Item* item) +{ + ControlPoint* p = reinterpret_cast<ControlPoint *> (item->get_data ("control_point")); + + if (p == 0) { + fatal << _("programming error: control point canvas item has no control point object pointer!") << endmsg; + /*NOTREACHED*/ + } + + ControlPointDialog d (p); + d.set_position (Gtk::WIN_POS_MOUSE); + ensure_float (d); + + if (d.run () != RESPONSE_ACCEPT) { + return; + } + + p->line().modify_point_y (*p, d.get_y_fraction ()); +} + + +void Editor::start_line_grab_from_regionview (ArdourCanvas::Item* item, GdkEvent* event) { switch (mouse_mode) { |