void
Editor::update_time_selection_display ()
{
- switch (mouse_mode) {
- case MouseRange:
- selection->clear_objects ();
- break;
- default:
- selection->clear_time ();
- break;
+ if (smart_mode_action->get_active()) {
+ /* not sure what to do here */
+ if (mouse_mode == MouseObject) {
+ } else {
+ }
+ } else {
+ switch (mouse_mode) {
+ case MouseRange:
+ selection->clear_objects ();
+ selection->ClearMidiNoteSelection(); //signal
+ break;
+ case MouseObject:
+ selection->clear_objects ();
+ selection->clear_time ();
+ selection->clear_tracks ();
+ selection->ClearMidiNoteSelection(); //signal
+ break;
+ case MouseContent:
+ case MouseDraw:
+ //if we go into internal editing, clear everything in the outside world
+ selection->clear_objects ();
+ selection->clear_time ();
+ selection->clear_tracks ();
+ break;
+ default:
+ //clear everything
+ selection->clear_objects ();
+ selection->clear_time ();
+ selection->clear_tracks ();
+ break;
+ }
}
}
connect_to_diskstream ();
SelectionCleared.connect (_selection_cleared_connection, invalidator (*this), boost::bind (&MidiRegionView::selection_cleared, this, _1), gui_context ());
+
+ PublicEditor& editor (trackview.editor());
+ editor.get_selection().ClearMidiNoteSelection.connect (_clear_midi_selection_connection, invalidator (*this), boost::bind (&MidiRegionView::clear_midi_selection, this), gui_context ());
}
MidiRegionView::MidiRegionView (ArdourCanvas::Container* parent,
connect_to_diskstream ();
SelectionCleared.connect (_selection_cleared_connection, invalidator (*this), boost::bind (&MidiRegionView::selection_cleared, this, _1), gui_context ());
+
+ PublicEditor& editor (trackview.editor());
+ editor.get_selection().ClearMidiNoteSelection.connect (_clear_midi_selection_connection, invalidator (*this), boost::bind (&MidiRegionView::clear_midi_selection, this), gui_context ());
}
void
connect_to_diskstream ();
SelectionCleared.connect (_selection_cleared_connection, invalidator (*this), boost::bind (&MidiRegionView::selection_cleared, this, _1), gui_context ());
+
+ PublicEditor& editor (trackview.editor());
+ editor.get_selection().ClearMidiNoteSelection.connect (_clear_midi_selection_connection, invalidator (*this), boost::bind (&MidiRegionView::clear_midi_selection, this), gui_context ());
}
InstrumentInfo&
PBD::ScopedConnection _selection_cleared_connection;
void selection_cleared (MidiRegionView *);
+ /** this handles the case when the "external" world wants us to clear our internal selections
+ */
+ PBD::ScopedConnection _clear_midi_selection_connection;
+ void clear_midi_selection () { clear_selection(); }
+
friend class EditNoteDialog;
/** Play the NoteOn event of the given note immediately
virtual void copy_playlists (TimeAxisView*) = 0;
virtual void clear_playlists (TimeAxisView*) = 0;
virtual void select_all_tracks () = 0;
+ virtual void deselect_all () = 0;
virtual void set_selected_track (TimeAxisView&, Selection::Operation op = Selection::Set, bool no_remove = false) = 0;
virtual void set_selected_mixer_strip (TimeAxisView&) = 0;
virtual void hide_track_in_display (TimeAxisView* tv, bool apply_to_selection = false) = 0;
using namespace ARDOUR;
using namespace PBD;
+PBD::Signal0<void> Selection::ClearMidiNoteSelection;
+
struct AudioRangeComparator {
bool operator()(AudioRange a, AudioRange b) {
return a.start < b.start;
midi_notes.clear ();
MidiNotesChanged ();
}
+
+ /* The note selection is actually stored in MidiRegionView, emit signal to
+ tell them to clear their selection. */
+ ClearMidiNoteSelection(); /* EMIT SIGNAL */
}
void
* The Track selection isn't affected when ranges or objects are added.
*/
+ void clear_all() { clear_time(); clear_tracks(); clear_objects(); }
+
void clear_time(); //clears any time selection ( i.e. Range )
void clear_tracks (); //clears the track header selections
void clear_objects(); //clears the items listed below
XMLNode& get_state () const;
int set_state (XMLNode const &, int);
+ static PBD::Signal0<void> ClearMidiNoteSelection;
+
private:
PublicEditor const * editor;
uint32_t next_time_id;
set_frame_gradient ();
if (!_recregion) {
- uint32_t f = ARDOUR_UI::config()->color ("time axis frame");
-
- if (!rect_visible) {
- /* make the frame outline be visible but rather transparent */
- f = UINT_RGBA_CHANGE_A (f, 64);
- }
-
- frame->set_outline_color (f);
+ frame->set_outline_color (ARDOUR_UI::config()->color ("time axis frame"));
}
}