summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2008-09-26 17:18:22 +0000
committerDavid Robillard <d@drobilla.net>2008-09-26 17:18:22 +0000
commitabf64beac66bf340b52b7d29e881536d444d13d6 (patch)
tree03a452b3fb2889f3b8aa8c419b327ed78a453a04 /gtk2_ardour
parent6f4daaae0af346bc8a3a1b528a043b45198b687a (diff)
Fix audio region copy-drag, partially fix MIDI region copy-drag (thanks torbenh).
git-svn-id: svn://localhost/ardour2/branches/3.0@3809 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/audio_region_view.h4
-rw-r--r--gtk2_ardour/editor_mouse.cc21
-rw-r--r--gtk2_ardour/midi_region_view.cc41
-rw-r--r--gtk2_ardour/midi_region_view.h3
4 files changed, 58 insertions, 11 deletions
diff --git a/gtk2_ardour/audio_region_view.h b/gtk2_ardour/audio_region_view.h
index 79adbd0b62..31c5439079 100644
--- a/gtk2_ardour/audio_region_view.h
+++ b/gtk2_ardour/audio_region_view.h
@@ -62,8 +62,8 @@ class AudioRegionView : public RegionView
bool recording,
TimeAxisViewItem::Visibility);
- AudioRegionView (const AudioRegionView& other);
- AudioRegionView (const AudioRegionView& other, boost::shared_ptr<ARDOUR::AudioRegion>);
+ AudioRegionView (const AudioRegionView& other);
+ AudioRegionView (const AudioRegionView& other, boost::shared_ptr<ARDOUR::AudioRegion>);
~AudioRegionView ();
diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc
index 32b84434b1..ca71c13c48 100644
--- a/gtk2_ardour/editor_mouse.cc
+++ b/gtk2_ardour/editor_mouse.cc
@@ -3329,20 +3329,23 @@ Editor::possibly_copy_regions_during_grab (GdkEvent* event)
RegionView* nrv;
rv = (*i);
-
AudioRegionView* arv = dynamic_cast<AudioRegionView*>(rv);
MidiRegionView* mrv = dynamic_cast<MidiRegionView*>(rv);
+
+ const boost::shared_ptr<const Region> original = rv->region();
+ boost::shared_ptr<Region> region_copy = RegionFactory::create (original);
if (arv) {
- nrv = new AudioRegionView (*arv);
+ boost::shared_ptr<AudioRegion> audioregion_copy
+ = boost::dynamic_pointer_cast<AudioRegion>(region_copy);
+ nrv = new AudioRegionView (*arv, audioregion_copy);
} else if (mrv) {
- nrv = new MidiRegionView (*mrv);
- } else {
- continue;
- }
-
- const boost::shared_ptr<const Region> original = rv->region();
- boost::shared_ptr<Region> region_copy = RegionFactory::create (original);
+ boost::shared_ptr<MidiRegion> midiregion_copy
+ = boost::dynamic_pointer_cast<MidiRegion>(region_copy);
+ nrv = new MidiRegionView (*mrv, midiregion_copy);
+ } else {
+ continue;
+ }
nrv->get_canvas_group()->show ();
new_regionviews.push_back (nrv);
diff --git a/gtk2_ardour/midi_region_view.cc b/gtk2_ardour/midi_region_view.cc
index 90fcce84ea..8fe67afdd3 100644
--- a/gtk2_ardour/midi_region_view.cc
+++ b/gtk2_ardour/midi_region_view.cc
@@ -91,6 +91,47 @@ MidiRegionView::MidiRegionView (ArdourCanvas::Group *parent, RouteTimeAxisView &
_note_group->raise_to_top();
}
+
+MidiRegionView::MidiRegionView (const MidiRegionView& other)
+ : RegionView (other)
+ , _force_channel(-1)
+ , _last_channel_selection(0xFFFF)
+ , _default_note_length(0.0)
+ , _active_notes(0)
+ , _note_group(new ArdourCanvas::Group(*get_canvas_group()))
+ , _delta_command(NULL)
+ , _mouse_state(None)
+ , _pressed_button(0)
+{
+ Gdk::Color c;
+ int r,g,b,a;
+
+ UINT_TO_RGBA (other.fill_color, &r, &g, &b, &a);
+ c.set_rgb_p (r/255.0, g/255.0, b/255.0);
+
+ init (c, false);
+}
+
+MidiRegionView::MidiRegionView (const MidiRegionView& other, boost::shared_ptr<MidiRegion> other_region)
+ : RegionView (other, boost::shared_ptr<Region> (other_region))
+ , _force_channel(-1)
+ , _last_channel_selection(0xFFFF)
+ , _default_note_length(0.0)
+ , _active_notes(0)
+ , _note_group(new ArdourCanvas::Group(*get_canvas_group()))
+ , _delta_command(NULL)
+ , _mouse_state(None)
+ , _pressed_button(0)
+{
+ Gdk::Color c;
+ int r,g,b,a;
+
+ UINT_TO_RGBA (other.fill_color, &r, &g, &b, &a);
+ c.set_rgb_p (r/255.0, g/255.0, b/255.0);
+
+ init (c, true);
+}
+
void
MidiRegionView::init (Gdk::Color& basic_color, bool wfd)
{
diff --git a/gtk2_ardour/midi_region_view.h b/gtk2_ardour/midi_region_view.h
index fe2655333c..6010e2253f 100644
--- a/gtk2_ardour/midi_region_view.h
+++ b/gtk2_ardour/midi_region_view.h
@@ -57,6 +57,9 @@ class MidiRegionView : public RegionView
boost::shared_ptr<ARDOUR::MidiRegion>,
double initial_samples_per_unit,
Gdk::Color& basic_color);
+
+ MidiRegionView (const MidiRegionView& other);
+ MidiRegionView (const MidiRegionView& other, boost::shared_ptr<ARDOUR::MidiRegion>);
~MidiRegionView ();