summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2013-04-17 15:22:09 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2013-04-17 15:22:09 -0400
commitec102f94e1105a6c9f445a0cde6c2dd1b6ea4b8b (patch)
tree970d269534121d51960bc56a5d6092d88c6baf97 /gtk2_ardour
parent9727a2311100d87bba1ceac62e5a9e42e9420cd8 (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.cc11
-rw-r--r--gtk2_ardour/editor_cursors.cc3
-rw-r--r--gtk2_ardour/editor_cursors.h4
-rw-r--r--gtk2_ardour/editor_drag.cc15
-rw-r--r--gtk2_ardour/editor_drag.h3
-rw-r--r--gtk2_ardour/editor_mouse.cc10
-rw-r--r--gtk2_ardour/editor_rulers.cc2
-rw-r--r--gtk2_ardour/marker.cc12
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 ()