diff options
author | David Robillard <d@drobilla.net> | 2008-09-26 17:18:22 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2008-09-26 17:18:22 +0000 |
commit | abf64beac66bf340b52b7d29e881536d444d13d6 (patch) | |
tree | 03a452b3fb2889f3b8aa8c419b327ed78a453a04 /gtk2_ardour | |
parent | 6f4daaae0af346bc8a3a1b528a043b45198b687a (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.h | 4 | ||||
-rw-r--r-- | gtk2_ardour/editor_mouse.cc | 21 | ||||
-rw-r--r-- | gtk2_ardour/midi_region_view.cc | 41 | ||||
-rw-r--r-- | gtk2_ardour/midi_region_view.h | 3 |
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 (); |