#include "midi_region_view.h"
#include "note_base.h"
-#include "i18n.h"
+#include "pbd/i18n.h"
using namespace std;
using namespace Gtk;
_time_clock.set_session (_region_view->get_time_axis_view().session ());
_time_clock.set_mode (AudioClock::BBT);
- _time_clock.set (_region_view->source_relative_time_converter().to ((*_events.begin())->note()->time ()), true);
+ _time_clock.set (_region_view->source_relative_time_converter().to
+ ((*_events.begin())->note()->time()) + (_region_view->region()->position() - _region_view->region()->start()), true);
l = manage (left_aligned_label (_("Length")));
table->attach (*l, 0, 1, r, r + 1);
_length_clock.set_session (_region_view->get_time_axis_view().session ());
_length_clock.set_mode (AudioClock::BBT);
- _length_clock.set (_region_view->region_relative_time_converter().to ((*_events.begin())->note()->length ()), true);
+ _length_clock.set (
+ _region_view->region_relative_time_converter().to ((*_events.begin())->note()->end_time ()) + _region_view->region()->position(),
+ true,
+ _region_view->region_relative_time_converter().to ((*_events.begin())->note()->time ()) + _region_view->region()->position());
/* Set up `set all notes...' buttons' sensitivity */
_velocity_all.set_sensitive (false);
_time_all.set_sensitive (false);
_length_all.set_sensitive (false);
-
+
int test_channel = (*_events.begin())->note()->channel ();
int test_pitch = (*_events.begin())->note()->note ();
int test_velocity = (*_events.begin())->note()->velocity ();
- double test_time = (*_events.begin())->note()->time ();
- double test_length = (*_events.begin())->note()->length ();
-
+ Temporal::Beats test_time = (*_events.begin())->note()->time ();
+ Temporal::Beats test_length = (*_events.begin())->note()->length ();
+
for (set<NoteBase*>::iterator i = _events.begin(); i != _events.end(); ++i) {
if ((*i)->note()->channel() != test_channel) {
_channel_all.set_sensitive (true);
_length_all.set_sensitive (true);
}
}
-
+
get_vbox()->pack_start (*table);
add_button (Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
EditNoteDialog::done (int r)
{
if (r != RESPONSE_ACCEPT) {
- return;
+ return;
}
/* These calls mean that if a value is entered using the keyboard
}
}
- double const t = _region_view->source_relative_time_converter().from (_time_clock.current_time ());
+ samplecnt_t const region_samples = _time_clock.current_time() - (_region_view->region()->position() - _region_view->region()->start());
+ Temporal::Beats const t = _region_view->source_relative_time_converter().from (region_samples);
if (!_time_all.get_sensitive() || _time_all.get_active ()) {
for (set<NoteBase*>::iterator i = _events.begin(); i != _events.end(); ++i) {
}
}
- double const d = _region_view->region_relative_time_converter().from (_length_clock.current_duration ());
-
if (!_length_all.get_sensitive() || _length_all.get_active ()) {
for (set<NoteBase*>::iterator i = _events.begin(); i != _events.end(); ++i) {
+ samplepos_t const note_end_sample = region_samples + _length_clock.current_duration (_time_clock.current_time());
+ Temporal::Beats const d = _region_view->source_relative_time_converter().from (note_end_sample) - (*i)->note()->time();
if (d != (*i)->note()->length()) {
_region_view->change_note_length (*i, d);
had_change = true;
_region_view->apply_diff ();
+ list<Evoral::event_id_t> notes;
for (set<NoteBase*>::iterator i = _events.begin(); i != _events.end(); ++i) {
- (*i)->set_selected ((*i)->selected()); // change color
+ notes.push_back ((*i)->note()->id());
}
+
+ _region_view->select_notes (notes);
}