mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-15 19:16:40 +01:00
redraw (pianoroll) MidiView when note mode changes
This also fixes the position of the percussive mode canvas items
This commit is contained in:
parent
5cb6a43eae
commit
5cade315fb
4 changed files with 22 additions and 4 deletions
|
|
@ -190,6 +190,14 @@ MidiView::init (std::shared_ptr<MidiTrack> mt)
|
|||
_note_group->raise_to_top();
|
||||
EditingContext::DropDownKeys.connect (sigc::mem_fun (*this, &MidiView::drop_down_keys));
|
||||
_midi_context.NoteRangeChanged.connect (sigc::mem_fun (*this, &MidiView::view_changed));
|
||||
_midi_context.NoteModeChanged.connect (sigc::mem_fun (*this, &MidiView::note_mode_changed));
|
||||
}
|
||||
|
||||
void
|
||||
MidiView::note_mode_changed ()
|
||||
{
|
||||
clear_events ();
|
||||
model_changed ();
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -1862,9 +1870,15 @@ MidiView::update_hit (Hit* ev)
|
|||
}
|
||||
|
||||
std::shared_ptr<NoteType> note = ev->note();
|
||||
const timepos_t note_time = _midi_region->source_beats_to_absolute_time (note->time());
|
||||
double x;
|
||||
|
||||
if (_midi_region && !_show_source) {
|
||||
const timepos_t note_time = _midi_region->source_beats_to_absolute_time (note->time());
|
||||
x = _editing_context.time_to_pixel(note_time) - _editing_context.time_to_pixel (_midi_region->position());
|
||||
} else {
|
||||
x = _editing_context.sample_to_pixel (timepos_t (note->time()).samples());
|
||||
}
|
||||
|
||||
const double x = _editing_context.time_to_pixel(note_time) - _editing_context.time_to_pixel (_midi_region->position());
|
||||
const double diamond_size = std::max(1., floor(note_height()) - 2.);
|
||||
const double y = 1.5 + floor(note_to_y(note->note())) + diamond_size * .5;
|
||||
|
||||
|
|
|
|||
|
|
@ -633,6 +633,7 @@ class MidiView : public virtual sigc::trackable, public LineMerger
|
|||
void update_sysexes ();
|
||||
void view_changed ();
|
||||
void model_changed ();
|
||||
void note_mode_changed ();
|
||||
|
||||
void sync_ghost_selection (NoteBase*);
|
||||
|
||||
|
|
|
|||
|
|
@ -249,7 +249,6 @@ MidiViewBackground::apply_note_range (uint8_t lowest, uint8_t highest, bool to_c
|
|||
{
|
||||
bool changed = false;
|
||||
|
||||
|
||||
if (_highest_note != highest) {
|
||||
_highest_note = highest;
|
||||
changed = true;
|
||||
|
|
@ -323,5 +322,8 @@ MidiViewBackground::update_data_note_range (uint8_t min, uint8_t max)
|
|||
void
|
||||
MidiViewBackground::set_note_mode (ARDOUR::NoteMode nm)
|
||||
{
|
||||
_note_mode = nm;
|
||||
if (_note_mode != nm) {
|
||||
_note_mode = nm;
|
||||
NoteModeChanged(); /* EMIT SIGNAL */
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,6 +61,7 @@ class MidiViewBackground : public virtual ViewBackground
|
|||
|
||||
ARDOUR::NoteMode note_mode() const { return _note_mode; }
|
||||
void set_note_mode (ARDOUR::NoteMode nm);
|
||||
sigc::signal<void> NoteModeChanged;
|
||||
|
||||
ARDOUR::ColorMode color_mode() const { return _color_mode; }
|
||||
void set_color_mode (ARDOUR::ColorMode);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue