cont'd work on piano roll highlighting.
authorRobin Gareus <robin@gareus.org>
Sat, 15 Aug 2015 03:13:14 +0000 (05:13 +0200)
committerRobin Gareus <robin@gareus.org>
Sat, 15 Aug 2015 03:13:14 +0000 (05:13 +0200)
gtk2_ardour/midi_region_view.cc
gtk2_ardour/midi_region_view.h
gtk2_ardour/piano_roll_header.cc

index 917999405c9b52d4bf8859293f7166647c0edf6c..67be18193763b048691100dbaecaa518a969249f 100644 (file)
@@ -470,7 +470,7 @@ MidiRegionView::enter_internal()
 void
 MidiRegionView::leave_internal()
 {
-       trackview.editor().verbose_cursor()->hide ();
+       hide_verbose_cursor ();
        remove_ghost_note ();
 
        if (_grabbed_keyboard) {
@@ -485,11 +485,6 @@ MidiRegionView::leave_internal()
        if (frame_handle_end) {
                frame_handle_end->raise_to_top();
        }
-
-       MidiTimeAxisView* mtv = dynamic_cast<MidiTimeAxisView*>(&trackview);
-       if (mtv) {
-               mtv->set_note_highlight (NO_MIDI_NOTE);
-       }
 }
 
 bool
@@ -634,7 +629,7 @@ MidiRegionView::motion (GdkEventMotion* ev)
        } else if (_ghost_note && editor.current_mouse_mode() == MouseContent) {
 
                remove_ghost_note ();
-               editor.verbose_cursor()->hide ();
+               hide_verbose_cursor ();
 
        } else if (_ghost_note && editor.current_mouse_mode() == MouseDraw) {
 
@@ -658,7 +653,7 @@ MidiRegionView::motion (GdkEventMotion* ev)
                                editor.drags()->set (new NoteCreateDrag (dynamic_cast<Editor *> (&editor), group, this), (GdkEvent *) ev);
                                _mouse_state = AddDragging;
                                remove_ghost_note ();
-                               editor.verbose_cursor()->hide ();
+                               hide_verbose_cursor ();
                                return true;
                        } else if (m == MouseContent) {
                                editor.drags()->set (new MidiRubberbandSelectDrag (dynamic_cast<Editor *> (&editor), this), (GdkEvent *) ev);
@@ -712,7 +707,7 @@ MidiRegionView::scroll (GdkEventScroll* ev)
                return false;
        }
 
-       trackview.editor().verbose_cursor()->hide ();
+       hide_verbose_cursor ();
 
        bool fine = !Keyboard::modifier_state_contains (ev->state, Keyboard::SecondaryModifier);
        bool together = Keyboard::modifier_state_contains (ev->state, Keyboard::TertiaryModifier);
@@ -1387,7 +1382,7 @@ MidiRegionView::~MidiRegionView ()
 {
        in_destructor = true;
 
-       trackview.editor().verbose_cursor()->hide ();
+       hide_verbose_cursor ();
 
        note_delete_connection.disconnect ();
 
@@ -2130,6 +2125,7 @@ MidiRegionView::delete_selection()
        _selection.clear();
 
        apply_diff ();
+       hide_verbose_cursor ();
 }
 
 void
@@ -2139,7 +2135,7 @@ MidiRegionView::delete_note (boost::shared_ptr<NoteType> n)
        _note_diff_command->remove (n);
        apply_diff ();
 
-       trackview.editor().verbose_cursor()->hide ();
+       hide_verbose_cursor ();
 }
 
 void
@@ -3336,13 +3332,11 @@ MidiRegionView::note_entered(NoteBase* ev)
 void
 MidiRegionView::note_left (NoteBase*)
 {
-       Editor* editor = dynamic_cast<Editor*>(&trackview.editor());
-
        for (Selection::iterator i = _selection.begin(); i != _selection.end(); ++i) {
                (*i)->hide_velocity ();
        }
 
-       editor->verbose_cursor()->hide ();
+       hide_verbose_cursor ();
 }
 
 void
@@ -3360,7 +3354,7 @@ MidiRegionView::patch_entered (PatchChange* p)
 void
 MidiRegionView::patch_left (PatchChange *)
 {
-       trackview.editor().verbose_cursor()->hide ();
+       hide_verbose_cursor ();
        /* focus will transfer back via the enter-notify event sent to this
         * midi region view.
         */
@@ -3380,7 +3374,7 @@ MidiRegionView::sysex_entered (SysEx* p)
 void
 MidiRegionView::sysex_left (SysEx *)
 {
-       trackview.editor().verbose_cursor()->hide ();
+       hide_verbose_cursor ();
        /* focus will transfer back via the enter-notify event sent to this
         * midi region view.
         */
@@ -3765,6 +3759,16 @@ MidiRegionView::remove_ghost_note ()
        _ghost_note = 0;
 }
 
+void
+MidiRegionView::hide_verbose_cursor ()
+{
+       trackview.editor().verbose_cursor()->hide ();
+       MidiTimeAxisView* mtv = dynamic_cast<MidiTimeAxisView*>(&trackview);
+       if (mtv) {
+               mtv->set_note_highlight (NO_MIDI_NOTE);
+       }
+}
+
 void
 MidiRegionView::snap_changed ()
 {
index 4cab6b16bfe027403b78f2787fab6e9cc446c83d..bcc4e7aca2b70cc5698f4a9c8b33398e4bd35e96 100644 (file)
@@ -502,6 +502,7 @@ private:
        void mouse_mode_changed ();
        void enter_internal ();
        void leave_internal ();
+       void hide_verbose_cursor ();
 
        framecnt_t _last_display_zoom;
 
index c6e0b94224e83d3c176895e3cc602ff57d011023..8b2e49770db27346df015800eb1450f06032ad74 100644 (file)
@@ -32,12 +32,12 @@ using namespace std;
 using namespace Gtkmm2ext;
 
 PianoRollHeader::Color PianoRollHeader::white = PianoRollHeader::Color(0.77f, 0.78f, 0.76f);
-PianoRollHeader::Color PianoRollHeader::white_highlight = PianoRollHeader::Color(1.00f, 0.50f, 0.50f);
+PianoRollHeader::Color PianoRollHeader::white_highlight = PianoRollHeader::Color(1.00f, 0.40f, 0.40f);
 PianoRollHeader::Color PianoRollHeader::white_shade_light = PianoRollHeader::Color(0.95f, 0.95f, 0.95f);
 PianoRollHeader::Color PianoRollHeader::white_shade_dark = PianoRollHeader::Color(0.56f, 0.56f, 0.56f);
 
 PianoRollHeader::Color PianoRollHeader::black = PianoRollHeader::Color(0.24f, 0.24f, 0.24f);
-PianoRollHeader::Color PianoRollHeader::black_highlight = PianoRollHeader::Color(0.50f, 0.10f, 0.10f);
+PianoRollHeader::Color PianoRollHeader::black_highlight = PianoRollHeader::Color(0.60f, 0.10f, 0.10f);
 PianoRollHeader::Color PianoRollHeader::black_shade_light = PianoRollHeader::Color(0.46f, 0.46f, 0.46f);
 PianoRollHeader::Color PianoRollHeader::black_shade_dark = PianoRollHeader::Color(0.1f, 0.1f, 0.1f);
 
@@ -558,6 +558,10 @@ PianoRollHeader::on_button_release_event (GdkEventButton* ev)
 
 void
 PianoRollHeader::set_note_highlight (uint8_t note) {
+       if (_highlighted_note == note) {
+               return;
+       }
+
        if (_highlighted_note != NO_MIDI_NOTE) {
                if (note > _highlighted_note) {
                        invalidate_note_range (_highlighted_note, note);