+ PBD::ScopedConnection content_connection;
+
+ ArdourCanvas::CanvasNoteEvent* find_canvas_note (boost::shared_ptr<NoteType>);
+ Events::iterator _optimization_iterator;
+
+ void update_note (ArdourCanvas::CanvasNote*);
+ void 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;
+
+ void show_verbose_canvas_cursor (boost::shared_ptr<NoteType>) const;
+
+ 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_program_changes_on_channel (uint8_t);
+
+};