summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2012-05-09 23:04:18 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2012-05-09 23:04:18 +0000
commit25655e1a6dae74a10707ebc8faa7b2bd0ab16210 (patch)
tree29f013883fe66f05662d3863c42a4bc789abe4a4 /gtk2_ardour
parentd8e41bde96cf31a80910a4e9fd0ac9f225dfce49 (diff)
skeleton for crossfade edge dragging
git-svn-id: svn://localhost/ardour2/branches/3.0@12235 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/editor_canvas_events.cc8
-rw-r--r--gtk2_ardour/editor_drag.cc37
-rw-r--r--gtk2_ardour/editor_drag.h22
-rw-r--r--gtk2_ardour/editor_mouse.cc8
4 files changed, 69 insertions, 6 deletions
diff --git a/gtk2_ardour/editor_canvas_events.cc b/gtk2_ardour/editor_canvas_events.cc
index a123ea1e9c..77bc5ec27b 100644
--- a/gtk2_ardour/editor_canvas_events.cc
+++ b/gtk2_ardour/editor_canvas_events.cc
@@ -377,9 +377,7 @@ Editor::canvas_start_xfade_event (GdkEvent *event, ArdourCanvas::Item* item, Aud
}
- /* proxy for the regionview */
-
- return canvas_region_view_event (event, rv->get_canvas_group(), rv);
+ return typed_event (item, event, StartCrossFadeItem);
}
bool
@@ -411,9 +409,7 @@ Editor::canvas_end_xfade_event (GdkEvent *event, ArdourCanvas::Item* item, Audio
}
- /* proxy for the regionview */
-
- return canvas_region_view_event (event, rv->get_canvas_group(), rv);
+ return typed_event (item, event, EndCrossFadeItem);
}
bool
diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc
index 66bb09980f..2489114982 100644
--- a/gtk2_ardour/editor_drag.cc
+++ b/gtk2_ardour/editor_drag.cc
@@ -4551,3 +4551,40 @@ NoteCreateDrag::aborted (bool)
{
}
+
+/*------------*/
+
+CrossfadeEdgeDrag::CrossfadeEdgeDrag (Editor* e, AudioRegionView* rv, ArdourCanvas::Item* i, bool start_yn)
+ : Drag (e, i)
+ , arv (rv)
+ , start (start_yn)
+{
+ cerr << "new xfade drag\n";
+}
+
+CrossfadeEdgeDrag::~CrossfadeEdgeDrag ()
+{
+ cerr << "destory xfade drag\n";
+}
+
+void
+CrossfadeEdgeDrag::start_grab (GdkEvent* event, Gdk::Cursor *cursor)
+{
+ Drag::start_grab (event, cursor);
+}
+
+void
+CrossfadeEdgeDrag::motion (GdkEvent*, bool)
+{
+}
+
+void
+CrossfadeEdgeDrag::finished (GdkEvent*, bool)
+{
+}
+
+void
+CrossfadeEdgeDrag::aborted (bool)
+{
+}
+
diff --git a/gtk2_ardour/editor_drag.h b/gtk2_ardour/editor_drag.h
index 0d457a39d9..3c33e4de48 100644
--- a/gtk2_ardour/editor_drag.h
+++ b/gtk2_ardour/editor_drag.h
@@ -972,5 +972,27 @@ private:
bool _nothing_to_drag;
};
+/** Drag of one edge of an xfade
+ */
+class CrossfadeEdgeDrag : public Drag
+{
+ public:
+ CrossfadeEdgeDrag (Editor*, AudioRegionView*, ArdourCanvas::Item*, bool start);
+ ~CrossfadeEdgeDrag ();
+
+ void start_grab (GdkEvent*, Gdk::Cursor* c = 0);
+ void motion (GdkEvent*, bool);
+ void finished (GdkEvent*, bool);
+ void aborted (bool);
+
+ bool x_movement_matters () const {
+ return false;
+ }
+
+ private:
+ AudioRegionView* arv;
+ bool start;
+};
+
#endif /* __gtk2_ardour_editor_drag_h_ */
diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc
index 351ed82e64..a36e4a5df6 100644
--- a/gtk2_ardour/editor_mouse.cc
+++ b/gtk2_ardour/editor_mouse.cc
@@ -935,6 +935,14 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT
return true;
}
+ case StartCrossFadeItem:
+ _drags->set (new CrossfadeEdgeDrag (this, reinterpret_cast<AudioRegionView*>(item->get_data("regionview")), item, true), event, 0);
+ break;
+
+ case EndCrossFadeItem:
+ _drags->set (new CrossfadeEdgeDrag (this, reinterpret_cast<AudioRegionView*>(item->get_data("regionview")), item, true), event, 0);
+ break;
+
case FeatureLineItem:
{
if (Keyboard::modifier_state_contains (event->button.state, Keyboard::TertiaryModifier)) {