diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2013-04-17 15:22:09 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2013-04-17 15:22:09 -0400 |
commit | ec102f94e1105a6c9f445a0cde6c2dd1b6ea4b8b (patch) | |
tree | 970d269534121d51960bc56a5d6092d88c6baf97 /gtk2_ardour | |
parent | 9727a2311100d87bba1ceac62e5a9e42e9420cd8 (diff) |
various work waveview amplitude mgmt; fix playhead cursor drag from timebar click
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/audio_region_view.cc | 11 | ||||
-rw-r--r-- | gtk2_ardour/editor_cursors.cc | 3 | ||||
-rw-r--r-- | gtk2_ardour/editor_cursors.h | 4 | ||||
-rw-r--r-- | gtk2_ardour/editor_drag.cc | 15 | ||||
-rw-r--r-- | gtk2_ardour/editor_drag.h | 3 | ||||
-rw-r--r-- | gtk2_ardour/editor_mouse.cc | 10 | ||||
-rw-r--r-- | gtk2_ardour/editor_rulers.cc | 2 | ||||
-rw-r--r-- | gtk2_ardour/marker.cc | 12 |
8 files changed, 33 insertions, 27 deletions
diff --git a/gtk2_ardour/audio_region_view.cc b/gtk2_ardour/audio_region_view.cc index b4cdcfb8dc..593e2cbf0a 100644 --- a/gtk2_ardour/audio_region_view.cc +++ b/gtk2_ardour/audio_region_view.cc @@ -326,10 +326,8 @@ AudioRegionView::fade_out_active_changed () void AudioRegionView::region_scale_amplitude_changed () { - double g = audio_region()->scale_amplitude (); - for (uint32_t n = 0; n < waves.size(); ++n) { - waves[n]->set_amplitude (g); + waves[n]->gain_changed (); } } @@ -729,10 +727,10 @@ AudioRegionView::set_samples_per_pixel (gdouble fpp) } void -AudioRegionView::set_amplitude_above_axis (gdouble spp) +AudioRegionView::set_amplitude_above_axis (gdouble a) { for (uint32_t n=0; n < waves.size(); ++n) { - waves[n]->property_amplitude_above_axis() = spp; + waves[n]->set_amplitude_above_axis (a); } } @@ -895,7 +893,6 @@ AudioRegionView::create_one_wave (uint32_t which, bool /*direct*/) wave->set_y_position (yoff); wave->set_height (ht); wave->set_samples_per_pixel (samples_per_pixel); - wave->property_amplitude_above_axis() = _amplitude_above_axis; if (_recregion) { wave->set_outline_color (_region->muted() ? UINT_RGBA_CHANGE_A(ARDOUR_UI::config()->get_canvasvar_RecWaveForm(), MUTED_ALPHA) : ARDOUR_UI::config()->get_canvasvar_RecWaveForm()); @@ -1075,7 +1072,7 @@ AudioRegionView::add_ghost (TimeAxisView& tv) wave->set_channel (n); wave->set_x_position (0); wave->set_samples_per_pixel (samples_per_pixel); - wave->property_amplitude_above_axis() = _amplitude_above_axis; + wave->set_amplitude_above_axis (_amplitude_above_axis); wave->set_region_start (_region->start()); ghost->waves.push_back(wave); diff --git a/gtk2_ardour/editor_cursors.cc b/gtk2_ardour/editor_cursors.cc index a1e1726747..59b81b2b48 100644 --- a/gtk2_ardour/editor_cursors.cc +++ b/gtk2_ardour/editor_cursors.cc @@ -75,8 +75,7 @@ EditorCursor::set_position (framepos_t frame) } if (new_pos != _track_canvas_item.x0 ()) { - _track_canvas_item.set_x0 (new_pos); - _track_canvas_item.set_x1 (new_pos); + _track_canvas_item.set_x (new_pos, new_pos); } _current_frame = frame; diff --git a/gtk2_ardour/editor_cursors.h b/gtk2_ardour/editor_cursors.h index a58a46bd5d..93689c6e7b 100644 --- a/gtk2_ardour/editor_cursors.h +++ b/gtk2_ardour/editor_cursors.h @@ -45,6 +45,10 @@ class EditorCursor { return _track_canvas_item; } + ArdourCanvas::Arrow& time_bar_canvas_item () { + return _time_bars_canvas_item; + } + PBD::Signal1<void, framepos_t> PositionChanged; private: diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc index d626afcdc6..98d251f762 100644 --- a/gtk2_ardour/editor_drag.cc +++ b/gtk2_ardour/editor_drag.cc @@ -2335,9 +2335,10 @@ TempoMarkerDrag::aborted (bool moved) } } -CursorDrag::CursorDrag (Editor* e, ArdourCanvas::Item* i, bool s) - : Drag (e, i), - _stop (s) +CursorDrag::CursorDrag (Editor* e, EditorCursor& c, bool s) + : Drag (e, &c.time_bar_canvas_item()) + , _cursor (c) + , _stop (s) { DEBUG_TRACE (DEBUG::Drags, "New CursorDrag\n"); } @@ -2376,6 +2377,10 @@ CursorDrag::start_grab (GdkEvent* event, Gdk::Cursor* c) Session* s = _editor->session (); + /* grab the track canvas item as well */ + + _cursor.track_canvas_item().grab(); + if (s) { if (_was_rolling && _stop) { s->request_stop (); @@ -2419,6 +2424,8 @@ CursorDrag::finished (GdkEvent* event, bool movement_occurred) { _editor->_dragging_playhead = false; + _cursor.track_canvas_item().ungrab(); + if (!movement_occurred && _stop) { return; } @@ -2436,6 +2443,8 @@ CursorDrag::finished (GdkEvent* event, bool movement_occurred) void CursorDrag::aborted (bool) { + _cursor.track_canvas_item().ungrab(); + if (_editor->_dragging_playhead) { _editor->session()->request_resume_timecode_transmission (); _editor->_dragging_playhead = false; diff --git a/gtk2_ardour/editor_drag.h b/gtk2_ardour/editor_drag.h index 5c9f09d04e..7c9b3538e9 100644 --- a/gtk2_ardour/editor_drag.h +++ b/gtk2_ardour/editor_drag.h @@ -626,7 +626,7 @@ private: class CursorDrag : public Drag { public: - CursorDrag (Editor *, ArdourCanvas::Item *, bool); + CursorDrag (Editor *, EditorCursor&, bool); void start_grab (GdkEvent *, Gdk::Cursor* c = 0); void motion (GdkEvent *, bool); @@ -648,6 +648,7 @@ public: private: void fake_locate (framepos_t); + EditorCursor& _cursor; bool _stop; ///< true to stop the transport on starting the drag, otherwise false double _grab_zoom; ///< editor frames per unit when our grab started }; diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc index efb4c1d5ae..0e4b54c7a2 100644 --- a/gtk2_ardour/editor_mouse.cc +++ b/gtk2_ardour/editor_mouse.cc @@ -708,7 +708,7 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT switch (item_type) { case PlayheadCursorItem: - _drags->set (new CursorDrag (this, item, true), event); + _drags->set (new CursorDrag (this, *playhead_cursor, true), event); return true; case MarkerItem: @@ -766,7 +766,7 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT case TempoBarItem: case MeterBarItem: if (!Keyboard::modifier_state_equals (event->button.state, Keyboard::PrimaryModifier)) { - _drags->set (new CursorDrag (this, &playhead_cursor->track_canvas_item (), false), event); + _drags->set (new CursorDrag (this, *playhead_cursor, false), event); } return true; break; @@ -774,7 +774,7 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT case RangeMarkerBarItem: if (!Keyboard::modifier_state_equals (event->button.state, Keyboard::PrimaryModifier)) { - _drags->set (new CursorDrag (this, &playhead_cursor->track_canvas_item (), false), event); + _drags->set (new CursorDrag (this, *playhead_cursor, false), event); } else { _drags->set (new RangeMarkerBarDrag (this, item, RangeMarkerBarDrag::CreateRangeMarker), event); } @@ -783,7 +783,7 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT case CdMarkerBarItem: if (!Keyboard::modifier_state_equals (event->button.state, Keyboard::PrimaryModifier)) { - _drags->set (new CursorDrag (this, &playhead_cursor->track_canvas_item (), false), event); + _drags->set (new CursorDrag (this, *playhead_cursor, false), event); } else { _drags->set (new RangeMarkerBarDrag (this, item, RangeMarkerBarDrag::CreateCDMarker), event); } @@ -792,7 +792,7 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT case TransportMarkerBarItem: if (!Keyboard::modifier_state_equals (event->button.state, Keyboard::PrimaryModifier)) { - _drags->set (new CursorDrag (this, &playhead_cursor->track_canvas_item (), false), event); + _drags->set (new CursorDrag (this, *playhead_cursor, false), event); } else { _drags->set (new RangeMarkerBarDrag (this, item, RangeMarkerBarDrag::CreateTransportMarker), event); } diff --git a/gtk2_ardour/editor_rulers.cc b/gtk2_ardour/editor_rulers.cc index 5993bb4432..477dd23f69 100644 --- a/gtk2_ardour/editor_rulers.cc +++ b/gtk2_ardour/editor_rulers.cc @@ -251,7 +251,7 @@ Editor::ruler_button_press (GdkEventButton* ev) } /* playhead cursor */ - _drags->set (new CursorDrag (this, &playhead_cursor->track_canvas_item (), false), reinterpret_cast<GdkEvent *> (ev)); + _drags->set (new CursorDrag (this, *playhead_cursor, false), reinterpret_cast<GdkEvent *> (ev)); _dragging_playhead = true; } diff --git a/gtk2_ardour/marker.cc b/gtk2_ardour/marker.cc index 5afc59a8b4..03c6a67438 100644 --- a/gtk2_ardour/marker.cc +++ b/gtk2_ardour/marker.cc @@ -26,6 +26,7 @@ #include "canvas/polygon.h" #include "canvas/text.h" #include "canvas/canvas.h" +#include "canvas/debug.h" #include "ardour_ui.h" /* @@ -252,9 +253,8 @@ Marker::Marker (PublicEditor& ed, ArdourCanvas::Group& parent, guint32 rgba, con /* adjust to properly locate the tip */ mark = new ArdourCanvas::Polygon (group); -#ifdef CANVAS_DEBUG - mark->name = string_compose ("Marker::mark for %1", annotation); -#endif + CANVAS_DEBUG_NAME (mark, string_compose ("Marker::mark for %1", annotation)); + mark->set (*points); set_color_rgba (rgba); @@ -270,12 +270,9 @@ Marker::Marker (PublicEditor& ed, ArdourCanvas::Group& parent, guint32 rgba, con Gtkmm2ext::get_ink_pixel_size (layout, width, name_height); _name_item = new ArdourCanvas::Text (group); + CANVAS_DEBUG_NAME (_name_item, string_compose ("Marker::_name_item for %1", annotation)); _name_item->set_font_description (name_font); _name_item->set_color (RGBA_TO_UINT (0,0,0,255)); - -#ifdef CANVAS_DEBUG - _name_item->name = string_compose ("Marker::_name_item for %1", annotation); -#endif _name_item->set_position (ArdourCanvas::Duple (_label_offset, (13.0 / 2.0) - (name_height / 2.0))); set_name (annotation.c_str()); @@ -292,7 +289,6 @@ Marker::Marker (PublicEditor& ed, ArdourCanvas::Group& parent, guint32 rgba, con if (handle_events) { group->Event.connect (sigc::bind (sigc::mem_fun (editor, &PublicEditor::canvas_marker_event), group, this)); } - } Marker::~Marker () |