X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fpiano_roll_header.cc;h=b041bb3a89aaeb31d00f4498219ba129145d2aa5;hb=5b45dc04dfba73846893a8c591c4175c20b3415f;hp=28398678a139cdcde0efca4ee98d597bced2ffa7;hpb=d9101a15611f3e96a2b313dd86d522605588c32b;p=ardour.git diff --git a/gtk2_ardour/piano_roll_header.cc b/gtk2_ardour/piano_roll_header.cc index 28398678a1..b041bb3a89 100644 --- a/gtk2_ardour/piano_roll_header.cc +++ b/gtk2_ardour/piano_roll_header.cc @@ -445,7 +445,7 @@ PianoRollHeader::on_expose_event (GdkEventExpose* ev) double y = floor(_view.note_to_y(i)) - 0.5f; double note_height = floor(_view.note_to_y(i - 1)) - y; - int cn = i / 12; + int cn = i / 12 - 1; s << "C" << cn; //cr->get_text_extents(s.str(), te); @@ -471,17 +471,17 @@ PianoRollHeader::on_motion_notify_event (GdkEventMotion* ev) } else { invalidate_note_range(note, _highlighted_note); } - + _highlighted_note = note; } - + /* redraw already taken care of above */ if (_clicked_note != no_note && _clicked_note != note) { _active_notes[_clicked_note] = false; send_note_off(_clicked_note); _clicked_note = note; - + if (!_active_notes[note]) { _active_notes[note] = true; send_note_on(note); @@ -503,17 +503,17 @@ PianoRollHeader::on_button_press_event (GdkEventButton* ev) send_note_on (note); /* relax till release */ } else { - + if (ev->type == GDK_BUTTON_PRESS && note >= 0 && note < 128) { - + add_modal_grab(); _dragging = true; - + if (!_active_notes[note]) { _active_notes[note] = true; _clicked_note = note; send_note_on(note); - + invalidate_note_range(note, note); } else { reset_clicked_note(note); @@ -534,22 +534,22 @@ PianoRollHeader::on_button_release_event (GdkEventButton* ev) if (Keyboard::no_modifiers_active (ev->state)) { AddNoteSelection (note); // EMIT SIGNAL - } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) { + } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) { ToggleNoteSelection (note); // EMIT SIGNAL } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::RangeSelectModifier)) { ExtendNoteSelection (note); // EMIT SIGNAL } - + } else { if (_dragging) { remove_modal_grab(); _dragging = false; - + if (note == _clicked_note) { reset_clicked_note(note); } - } + } } return true; @@ -587,14 +587,7 @@ void PianoRollHeader::note_range_changed() { _note_height = floor(_view.note_height()) + 0.5f; - queue_draw(); - - Glib::RefPtr win = get_window(); - - if (win) { - win->process_updates(false); - } } void @@ -663,11 +656,12 @@ void PianoRollHeader::send_note_on(uint8_t note) { boost::shared_ptr track = _view.trackview().midi_track(); + MidiTimeAxisView* mtv = dynamic_cast (&_view.trackview ()); //cerr << "note on: " << (int) note << endl; if (track) { - _event[0] = (MIDI_CMD_NOTE_ON | track->default_channel()); + _event[0] = (MIDI_CMD_NOTE_ON | mtv->get_channel_for_add ()); _event[1] = note; _event[2] = 100; @@ -679,9 +673,10 @@ void PianoRollHeader::send_note_off(uint8_t note) { boost::shared_ptr track = _view.trackview().midi_track(); + MidiTimeAxisView* mtv = dynamic_cast (&_view.trackview ()); if (track) { - _event[0] = (MIDI_CMD_NOTE_OFF | track->default_channel()); + _event[0] = (MIDI_CMD_NOTE_OFF | mtv->get_channel_for_add ()); _event[1] = note; _event[2] = 100;