class MidiCutBuffer;
class MidiListEditor;
class EditNoteDialog;
-class NotePlayer;
class PatchChange;
class ItemCounts;
class CursorContext;
GhostRegion* add_ghost (TimeAxisView&);
- void add_note(const boost::shared_ptr<NoteType> note, bool visible);
+ NoteBase* add_note(const boost::shared_ptr<NoteType> note, bool visible);
void resolve_note(uint8_t note_num, Evoral::Beats end_time);
void cut_copy_clear (Editing::CutCopyOp);
void move_selection(double dx, double dy, double cumulative_dy);
void note_dropped (NoteBase* ev, ARDOUR::frameoffset_t, int8_t d_note);
+ void select_notes (std::list<boost::shared_ptr<NoteType> >);
void select_matching_notes (uint8_t notenum, uint16_t channel_mask, bool add, bool extend);
void toggle_matching_notes (uint8_t notenum, uint16_t channel_mask);
MouseState mouse_state() const { return _mouse_state; }
- void note_button_release ();
-
struct NoteResizeData {
Note *note;
ArdourCanvas::Rectangle *resize_rect;
* when they appear after the command is applied. */
std::set< boost::shared_ptr<NoteType> > _marked_for_selection;
+ /** Notes that should be selected when the model is redisplayed. */
+ std::set< boost::shared_ptr<NoteType> > _pending_note_selection;
+
/** New notes (created in the current command) which should have visible velocity
* when they appear after the command is applied. */
std::set< boost::shared_ptr<NoteType> > _marked_for_velocity;
PBD::ScopedConnection content_connection;
NoteBase* find_canvas_note (boost::shared_ptr<NoteType>);
+ NoteBase* find_canvas_note (NoteType);
Events::iterator _optimization_iterator;
void update_note (NoteBase*, bool update_ghost_regions = true);
bool _grabbed_keyboard;
bool _entered;
+ bool _mouse_changed_selection;
+
framepos_t snap_frame_to_grid_underneath (framepos_t p, framecnt_t &) const;
PBD::ScopedConnection _mouse_mode_connection;
boost::shared_ptr<CursorContext> _press_cursor_ctx;
- boost::shared_ptr<NotePlayer> _note_player;
-
ARDOUR::ChannelMode get_channel_mode() const;
uint16_t get_selected_channels () const;
};