Clean enter_internal and leave_internal in MidiRegionView.
authorAndré Nusser <andre.nusser@googlemail.com>
Mon, 30 Nov 2015 15:49:09 +0000 (16:49 +0100)
committerRobin Gareus <robin@gareus.org>
Tue, 12 Jan 2016 12:45:39 +0000 (13:45 +0100)
gtk2_ardour/midi_region_view.cc

index 012f49aa3603819f4a33d4cfe162f32dbf2bc3c9..22d148836735c82869ba80e2037ba34165948c79 100644 (file)
@@ -433,14 +433,18 @@ MidiRegionView::mouse_mode_changed ()
        // Adjust frame colour (become more transparent for internal tools)
        set_frame_color();
 
+       // Only necessary for leave as a mouse_mode_change over a region
+       // automatically triggers an enter event.
        if (_entered) {
-               if (trackview.editor().internal_editing()) {
-                       // Switched in to internal editing mode while entered
-                       enter_internal();
-               } else {
+               if (!trackview.editor().internal_editing()) {
                        // Switched out of internal editing mode while entered
                        leave_internal();
                }
+               else if (trackview.editor().current_mouse_mode() == MouseContent) {
+                       // hide cursor and ghost note after changing to internal edit mode
+                       hide_verbose_cursor ();
+                       remove_ghost_note ();
+               }
        }
 }
 
@@ -451,10 +455,6 @@ MidiRegionView::enter_internal()
                // Show ghost note under pencil
                create_ghost_note(_last_event_x, _last_event_y);
        }
-       else {
-               remove_ghost_note ();
-               hide_verbose_cursor ();
-       }
 
        if (!_selection.empty()) {
                // Grab keyboard for moving selected notes with arrow keys
@@ -476,6 +476,7 @@ MidiRegionView::leave_internal()
 {
        hide_verbose_cursor ();
        remove_ghost_note ();
+       _note_entered = false;
 
        if (_grabbed_keyboard) {
                Keyboard::magic_widget_drop_focus();