summaryrefslogtreecommitdiff
path: root/gtk2_ardour/editor_mouse.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gtk2_ardour/editor_mouse.cc')
-rw-r--r--gtk2_ardour/editor_mouse.cc27
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) {