summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/editor_drag.cc25
-rw-r--r--gtk2_ardour/editor_drag.h2
2 files changed, 17 insertions, 10 deletions
diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc
index b8339cc557..00ebdeb125 100644
--- a/gtk2_ardour/editor_drag.cc
+++ b/gtk2_ardour/editor_drag.cc
@@ -3122,6 +3122,8 @@ MeterMarkerDrag::MeterMarkerDrag (Editor* e, ArdourCanvas::Item* i, bool c)
DEBUG_TRACE (DEBUG::Drags, "New MeterMarkerDrag\n");
_marker = reinterpret_cast<MeterMarker*> (_item->get_data ("marker"));
assert (_marker);
+ _real_section = &_marker->meter();
+
}
void
@@ -3151,15 +3153,15 @@ MeterMarkerDrag::motion (GdkEvent* event, bool first_move)
// leave or lose the original marker (leave if its a copy; lose if its
// not, because we'll remove it from the map).
+ char name[64];
+ snprintf (name, sizeof(name), "%g/%g", _marker->meter().divisions_per_bar(), _marker->meter().note_divisor ());
+
MeterSection section (_marker->meter());
if (!section.movable()) {
return;
}
- char name[64];
- snprintf (name, sizeof(name), "%g/%g", _marker->meter().divisions_per_bar(), _marker->meter().note_divisor ());
-
_marker = new MeterMarker (
*_editor,
*_editor->meter_group,
@@ -3172,17 +3174,22 @@ MeterMarkerDrag::motion (GdkEvent* event, bool first_move)
swap_grab (&_marker->the_item(), 0, GDK_CURRENT_TIME);
if (!_copy) {
+ _editor->begin_reversible_command (_("move meter mark"));
TempoMap& map (_editor->session()->tempo_map());
/* get current state */
before_state = &map.get_state();
/* remove the section while we drag it */
- map.remove_meter (section, true);
+ //map.remove_meter (section, true);
}
+ _marker->hide();
}
- framepos_t const pf = adjusted_current_frame (event);
+ framepos_t const pf = adjusted_current_frame (event, false);
+ double const baf = _editor->session()->tempo_map().beat_at_frame (pf);
_marker->set_position (pf);
+ _editor->session()->tempo_map().gui_move_meter (_real_section, _marker->meter(), pf, baf);
+
show_verbose_cursor_time (pf);
}
@@ -3222,8 +3229,6 @@ MeterMarkerDrag::finished (GdkEvent* event, bool movement_occurred)
_editor->commit_reversible_command ();
} else {
- _editor->begin_reversible_command (_("move meter mark"));
-
/* we removed it before, so add it back now */
if (_marker->meter().position_lock_style() == AudioTime) {
map.add_meter (_marker->meter(), _marker->position());
@@ -3325,9 +3330,9 @@ TempoMarkerDrag::motion (GdkEvent* event, bool first_move)
framepos_t const pf = adjusted_current_frame (event, false);
double const baf = _editor->session()->tempo_map().beat_at_frame (pf);
-
- _marker->set_position (adjusted_current_frame (event, false));
- _editor->session()->tempo_map().gui_set_tempo_frame (*_real_section, pf, baf);
+ Tempo const tp = _marker->tempo();
+ _marker->set_position (pf);
+ _editor->session()->tempo_map().gui_move_tempo (_real_section, tp, pf, baf);
show_verbose_cursor_time (pf);
}
diff --git a/gtk2_ardour/editor_drag.h b/gtk2_ardour/editor_drag.h
index bd2672e23e..26029299ce 100644
--- a/gtk2_ardour/editor_drag.h
+++ b/gtk2_ardour/editor_drag.h
@@ -705,6 +705,8 @@ public:
private:
MeterMarker* _marker;
+ ARDOUR::MeterSection* _real_section;
+
bool _copy;
XMLNode* before_state;
};