mouse_mode = m;
+ /* Switch snap type/mode if we're moving to/from an internal tool. Note
+ this must toggle the actions and not call set_snap_*() directly,
+ otherwise things get out of sync and the combo box stops working. */
if (!was_internal && internal_editing()) {
- /* switched to internal, switch to internal snap settings */
- set_snap_to(internal_snap_type);
- set_snap_mode(internal_snap_mode);
+ snap_type_action(internal_snap_type)->set_active(true);
+ snap_mode_action(internal_snap_mode)->set_active(true);
} else if (was_internal && !internal_editing()) {
- /* switched out of internal, switch to non-internal snap settings */
- set_snap_to(pre_internal_snap_type);
- set_snap_mode(pre_internal_snap_mode);
+ snap_type_action(pre_internal_snap_type)->set_active(true);
+ snap_mode_action(pre_internal_snap_mode)->set_active(true);
}
instant_save ();
update_time_selection_display ();
+ update_all_enter_cursors ();
+
MouseModeChanged (); /* EMIT SIGNAL */
}
popup_control_point_context_menu (item, event);
break;
+ case NoteItem:
+ if (internal_editing()) {
+ popup_note_context_menu (item, event);
+ }
+ break;
+
default:
break;
}
}
/* do any (de)selection operations that should occur on button release */
+
+ begin_reversible_selection_op (_("Button Select"));
button_selection (item, event, item_type);
+ commit_reversible_selection_op ();
+
return true;
break;
bool is_start;
bool ret = true;
- _enter_cursor_ctx.reset();
- _entered_item_type = NoItem;
+ if (!_enter_stack.empty()) {
+ _enter_stack.pop_back();
+ }
switch (item_type) {
case ControlPointItem:
}
void
-Editor::edit_notes (TimeAxisViewItem& tavi)
+Editor::edit_notes (MidiRegionView* mrv)
{
- MidiRegionView* mrv = dynamic_cast<MidiRegionView*>(&tavi);
-
- if (!mrv) {
- return;
- }
-
MidiRegionView::Selection const & s = mrv->selection();
if (s.empty ()) {
return;
}
- EditNoteDialog* d = new EditNoteDialog (&(*s.begin())->region_view(), s);
+ EditNoteDialog* d = new EditNoteDialog (mrv, s);
d->show_all ();
ensure_float (*d);
ArdourCanvas::Duple const item_space = entered_regionview->get_canvas_group()->canvas_to_item (ArdourCanvas::Duple (0, y));
double const c = item_space.y / entered_regionview->height();
-
+
_join_object_range_state = c <= 0.5 ? JOIN_OBJECT_RANGE_RANGE : JOIN_OBJECT_RANGE_OBJECT;
-
- if (_join_object_range_state != old && _enter_cursor_ctx) {
- _enter_cursor_ctx->change(which_track_cursor());
+
+ Editor::EnterContext* ctx = get_enter_context(RegionItem);
+ if (_join_object_range_state != old && ctx) {
+ ctx->cursor_ctx->change(which_track_cursor());
}
} else if (entered_track) {
_join_object_range_state = JOIN_OBJECT_RANGE_OBJECT;
}
- if (_join_object_range_state != old && _enter_cursor_ctx) {
- _enter_cursor_ctx->change(which_track_cursor());
+ Editor::EnterContext* ctx = get_enter_context(StreamItem);
+ if (_join_object_range_state != old && ctx) {
+ ctx->cursor_ctx->change(which_track_cursor());
}
}
}