+ void update_note (ArdourCanvas::CanvasNote *, bool update_ghost_regions = true);
+ double update_hit (ArdourCanvas::CanvasHit *);
+ void create_ghost_note (double, double);
+ void update_ghost_note (double, double);
+
+ MidiListEditor* _list_editor;
+ bool _no_sound_notes;
+
+ PBD::ScopedConnection note_delete_connection;
+ void maybe_remove_deleted_note_from_selection (ArdourCanvas::CanvasNoteEvent*);
+
+ void snap_changed ();
+ PBD::ScopedConnection snap_changed_connection;
+
+ bool motion (GdkEventMotion*);
+ bool scroll (GdkEventScroll*);
+ bool key_press (GdkEventKey*);
+ bool key_release (GdkEventKey*);
+ bool button_press (GdkEventButton*);
+ bool button_release (GdkEventButton*);
+ bool enter_notify (GdkEventCrossing*);
+ bool leave_notify (GdkEventCrossing*);
+
+ void drop_down_keys ();
+ void maybe_select_by_position (GdkEventButton* ev, double x, double y);
+ void get_events (Events& e, Evoral::Sequence<Evoral::MusicalTime>::NoteOperator op, uint8_t val, int chan_mask = 0);
+
+ void display_patch_changes_on_channel (uint8_t, bool);
+
+ void connect_to_diskstream ();
+ void data_recorded (boost::weak_ptr<ARDOUR::MidiSource>);
+
+ void remove_ghost_note ();
+ void mouse_mode_changed ();
+ double _last_event_x;
+ double _last_event_y;
+
+ framepos_t snap_frame_to_grid_underneath (framepos_t p, framecnt_t &) const;