PublicEditor::DropDownKeys.connect (sigc::mem_fun (*this, &MidiRegionView::drop_down_keys));
Config->ParameterChanged.connect (*this, invalidator (*this), boost::bind (&MidiRegionView::parameter_changed, this, _1), gui_context());
+ UIConfiguration::instance().ParameterChanged.connect (sigc::mem_fun (*this, &MidiRegionView::parameter_changed));
+
connect_to_diskstream ();
}
}
} else if (p == "color-regions-using-track-color") {
set_colors ();
+ } else if (p == "use-note-color-for-velocity") {
+ color_handler ();
}
}
return RegionView::canvas_group_event (ev);
}
+ //For now, move the snapped cursor aside so it doesn't bother you during internal editing
+ //trackview.editor().set_snapped_cursor_position(_region->position());
+
bool r;
switch (ev->type) {
void
MidiRegionView::mouse_mode_changed ()
{
- // Adjust sample colour (become more transparent for internal tools)
- set_sample_color();
+ // Adjust frame colour (become more transparent for internal tools)
+ set_frame_color();
if (_entered) {
if (!trackview.editor().internal_editing()) {
_grabbed_keyboard = true;
}
- // Lower sample handles below notes so they don't steal events
- if (sample_handle_start) {
- sample_handle_start->lower_to_bottom();
+ // Lower frame handles below notes so they don't steal events
+ if (frame_handle_start) {
+ frame_handle_start->lower_to_bottom();
}
- if (sample_handle_end) {
- sample_handle_end->lower_to_bottom();
+ if (frame_handle_end) {
+ frame_handle_end->lower_to_bottom();
}
}
}
// Raise sample handles above notes so they catch events
- if (sample_handle_start) {
- sample_handle_start->raise_to_top();
+ if (frame_handle_start) {
+ frame_handle_start->raise_to_top();
}
- if (sample_handle_end) {
- sample_handle_end->raise_to_top();
+ if (frame_handle_end) {
+ frame_handle_end->raise_to_top();
}
}
}
- /* we may be dragging some non-note object (eg. patch-change, sysex)
- */
-
- return editor.drags()->motion_handler ((GdkEvent *) ev, false);
+ //let RegionView do it's thing. drags are handled in here
+ return RegionView::canvas_group_event ((GdkEvent *) ev);
}
bool
MidiRegionView::scroll (GdkEventScroll* ev)
{
+ if (trackview.editor().drags()->active()) {
+ return false;
+ }
if (_selection.empty()) {
return false;
}
void
MidiRegionView::apply_diff (bool as_subcommand, bool was_copy)
{
- bool add_or_remove;
bool commit = false;
if (!_note_diff_command) {
return;
}
- if (!was_copy && (add_or_remove = _note_diff_command->adds_or_removes())) {
+ bool add_or_remove = _note_diff_command->adds_or_removes();
+
+ if (!was_copy && add_or_remove) {
// Mark all selected notes for selection when model reloads
for (Selection::iterator i = _selection.begin(); i != _selection.end(); ++i) {
_marked_for_selection.insert((*i)->note());
y1 = y0 + std::max(1., floor(note_height()) - 1);
ev->set (ArdourCanvas::Rect (x0, y0, x1, y1));
+ ev->set_velocity (note->velocity()/127.0);
if (!note->length()) {
if (_active_notes && note->note() < 128) {
ArdourCanvas::Rect (note->x0(), note->y0(), note->x0(), note->y1()));
// calculate the colors: get the color settings
- uint32_t fill_color = UINT_RGBA_CHANGE_A(
- UIConfiguration::instance().color ("midi note selected"),
- 128);
+ uint32_t fill_color = NoteBase::meter_style_fill_color (note->note()->velocity(), true);
// make the resize preview notes more transparent and bright
fill_color = UINT_INTERPOLATE(fill_color, 0xFFFFFF40, 0.5);
0.85));
resize_rect->set_outline_color (NoteBase::calculate_outline (
- UIConfiguration::instance().color ("midi note selected")));
+ UIConfiguration::instance().color ("midi note selected outline")));
resize_data->resize_rect = resize_rect;
_resize_data.push_back(resize_data);
}
if (current_x < 0) {
- // This works even with snapping because RegionView::snap_sample_to_sample()
- // snaps forward if the snapped sample is before the beginning of the region
+ /* This works even with snapping because RegionView::snap_sample_to_sample()
+ * snaps forward if the snapped sample is before the beginning of the region
+ */
current_x = 0;
}
if (current_x > trackview.editor().sample_to_pixel(_region->length())) {
if (snap_delta_samps > 0) {
snap_delta_beats = region_samples_to_region_beats_double (snap_delta_samps);
} else if (snap_delta_samps < 0) {
- snap_delta_beats = region_samples_to_region_beats_double ( - snap_delta_samps);
+ snap_delta_beats = region_samples_to_region_beats_double (- snap_delta_samps);
sign = -1;
}
} else {
snapped_x = trackview.editor ().pixel_to_sample (current_x);
}
+
const Temporal::Beats beats = Temporal::Beats (tmap.exact_beat_at_sample (snapped_x + midi_region()->position(), divisions)
- - midi_region()->beat()) + midi_region()->start_beats();
+ - midi_region()->beat())
+ + midi_region()->start_beats();
Temporal::Beats len = Temporal::Beats();
show_verbose_cursor (buf, 0, 0);
cursor_set = true;
+
+ trackview.editor().set_snapped_cursor_position ( snapped_x + midi_region()->position() );
}
}
next_pos.sample -= 1;
}
- trackview.editor().snap_to (next_pos, (forward ? RoundUpAlways : RoundDownAlways), false);
+ trackview.editor().snap_to (next_pos, (forward ? RoundUpAlways : RoundDownAlways), SnapToGrid_Unscaled, false);
const samplecnt_t distance = ref_point - next_pos.sample;
delta = region_samples_to_region_beats (fabs ((double)distance));
}
const Temporal::Beats duration = last_time - first_time;
const Temporal::Beats snap_duration = duration.snap_to(snap_beats);
const Temporal::Beats paste_offset = snap_duration * paste_count;
- const Temporal::Beats quarter_note = absolute_samples_to_source_beats(pos) + paste_offset;
- Temporal::Beats end_point = Temporal::Beats();
+ const Temporal::Beats quarter_note = absolute_samples_to_source_beats(pos) + paste_offset;
+ Temporal::Beats end_point = Temporal::Beats();
DEBUG_TRACE (DEBUG::CutNPaste, string_compose ("Paste data spans from %1 to %2 (%3) ; paste pos beats = %4 (based on %5 - %6)\n",
first_time,
_step_edit_cursor_width = beats;
if (_step_edit_cursor) {
- _step_edit_cursor->set_x1 (_step_edit_cursor->x0() + trackview.editor().sample_to_pixel (
- region_beats_to_region_samples (_step_edit_cursor_position + beats)
- - region_beats_to_region_samples (_step_edit_cursor_position)));
+ _step_edit_cursor->set_x1 (_step_edit_cursor->x0()
+ + trackview.editor().sample_to_pixel (
+ region_beats_to_region_samples (_step_edit_cursor_position + beats)
+ - region_beats_to_region_samples (_step_edit_cursor_position)));
}
}