Give internal edit mode its own cursor. Deselect everything when entering internal edit, and don't allow region selection during internal edit.
git-svn-id: svn://localhost/ardour2/branches/3.0@7396 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
4dc475776d
commit
01c78d5620
@ -215,6 +215,7 @@ Gdk::Cursor* Editor::right_side_trim_cursor = 0;
|
||||
Gdk::Cursor* Editor::fade_in_cursor = 0;
|
||||
Gdk::Cursor* Editor::fade_out_cursor = 0;
|
||||
Gdk::Cursor* Editor::grabber_cursor = 0;
|
||||
Gdk::Cursor* Editor::grabber_note_cursor = 0;
|
||||
Gdk::Cursor* Editor::grabber_edit_point_cursor = 0;
|
||||
Gdk::Cursor* Editor::zoom_cursor = 0;
|
||||
Gdk::Cursor* Editor::time_fx_cursor = 0;
|
||||
@ -1237,6 +1238,11 @@ Editor::build_cursors ()
|
||||
|
||||
grabber_cursor = new Gdk::Cursor (HAND2);
|
||||
|
||||
{
|
||||
Glib::RefPtr<Gdk::Pixbuf> grabber_note_pixbuf (::get_icon ("grabber_note"));
|
||||
grabber_note_cursor = new Gdk::Cursor (Gdk::Display::get_default(), grabber_note_pixbuf, 5, 10);
|
||||
}
|
||||
|
||||
{
|
||||
Glib::RefPtr<Gdk::Pixbuf> grabber_edit_point_pixbuf (::get_icon ("grabber_edit_point"));
|
||||
grabber_edit_point_cursor = new Gdk::Cursor (Gdk::Display::get_default(), grabber_edit_point_pixbuf, 5, 17);
|
||||
@ -1505,7 +1511,10 @@ Editor::build_track_region_context_menu (nframes64_t frame)
|
||||
boost::shared_ptr<Track> tr;
|
||||
boost::shared_ptr<Playlist> pl;
|
||||
|
||||
if ((tr = rtv->track()) && ((pl = tr->playlist()))) {
|
||||
/* Don't offer a region submenu if we are in internal edit mode, as we don't select regions in this
|
||||
mode and so offering region context is somewhat confusing.
|
||||
*/
|
||||
if ((tr = rtv->track()) && ((pl = tr->playlist())) && !internal_editing()) {
|
||||
Playlist::RegionList* regions = pl->regions_at ((nframes64_t) floor ( (double)frame * tr->speed()));
|
||||
|
||||
if (selection->regions.size() > 1) {
|
||||
|
@ -464,6 +464,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
|
||||
static Gdk::Cursor* fade_out_cursor;
|
||||
static Gdk::Cursor* selector_cursor;
|
||||
static Gdk::Cursor* grabber_cursor;
|
||||
static Gdk::Cursor* grabber_note_cursor;
|
||||
static Gdk::Cursor* grabber_edit_point_cursor;
|
||||
static Gdk::Cursor* zoom_cursor;
|
||||
static Gdk::Cursor* time_fx_cursor;
|
||||
|
@ -177,7 +177,7 @@ Editor::which_grabber_cursor ()
|
||||
break;
|
||||
|
||||
case MouseObject:
|
||||
c = grabber_cursor;
|
||||
c = grabber_note_cursor;
|
||||
break;
|
||||
|
||||
case MouseTimeFX:
|
||||
@ -427,6 +427,10 @@ Editor::button_selection (ArdourCanvas::Item* /*item*/, GdkEvent* event, ItemTyp
|
||||
region alignment.
|
||||
|
||||
note: not dbl-click or triple-click
|
||||
|
||||
Also note that there is no region selection in internal edit mode, otherwise
|
||||
for operations operating on the selection (e.g. cut) it is not obvious whether
|
||||
to cut notes or regions.
|
||||
*/
|
||||
|
||||
if (((mouse_mode != MouseObject) &&
|
||||
@ -435,8 +439,8 @@ Editor::button_selection (ArdourCanvas::Item* /*item*/, GdkEvent* event, ItemTyp
|
||||
(mouse_mode != MouseTimeFX || item_type != RegionItem) &&
|
||||
(mouse_mode != MouseGain) &&
|
||||
(mouse_mode != MouseRange)) ||
|
||||
|
||||
((event->type != GDK_BUTTON_PRESS && event->type != GDK_BUTTON_RELEASE) || event->button.button > 3)) {
|
||||
((event->type != GDK_BUTTON_PRESS && event->type != GDK_BUTTON_RELEASE) || event->button.button > 3) ||
|
||||
internal_editing()) {
|
||||
|
||||
return;
|
||||
}
|
||||
@ -460,7 +464,7 @@ Editor::button_selection (ArdourCanvas::Item* /*item*/, GdkEvent* event, ItemTyp
|
||||
|
||||
switch (item_type) {
|
||||
case RegionItem:
|
||||
if (mouse_mode != MouseRange || internal_editing() || _join_object_range_state == JOIN_OBJECT_RANGE_OBJECT) {
|
||||
if (mouse_mode != MouseRange || _join_object_range_state == JOIN_OBJECT_RANGE_OBJECT) {
|
||||
set_selected_regionview_from_click (press, op, true);
|
||||
} else if (event->type == GDK_BUTTON_PRESS) {
|
||||
selection->clear_tracks ();
|
||||
@ -469,14 +473,13 @@ Editor::button_selection (ArdourCanvas::Item* /*item*/, GdkEvent* event, ItemTyp
|
||||
if (_join_object_range_state == JOIN_OBJECT_RANGE_OBJECT && !selection->regions.empty()) {
|
||||
clicked_selection = select_range_around_region (selection->regions.front());
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case RegionViewNameHighlight:
|
||||
case RegionViewName:
|
||||
case LeftFrameHandle:
|
||||
case RightFrameHandle:
|
||||
if (mouse_mode != MouseRange || internal_editing() || _join_object_range_state == JOIN_OBJECT_RANGE_OBJECT) {
|
||||
if (mouse_mode != MouseRange || _join_object_range_state == JOIN_OBJECT_RANGE_OBJECT) {
|
||||
set_selected_regionview_from_click (press, op, true);
|
||||
} else if (event->type == GDK_BUTTON_PRESS) {
|
||||
set_selected_track_as_side_effect ();
|
||||
@ -2662,9 +2665,10 @@ Editor::set_internal_edit (bool yn)
|
||||
}
|
||||
}
|
||||
|
||||
for (TrackSelection::iterator i = selection->tracks.begin(); i != selection->tracks.end(); ++i) {
|
||||
(*i)->hide_selection ();
|
||||
}
|
||||
/* deselect everything to avoid confusion when e.g. we can't now cut a previously selected
|
||||
region because cut means "cut note" rather than "cut region".
|
||||
*/
|
||||
selection->clear ();
|
||||
|
||||
start_step_editing ();
|
||||
set_canvas_cursor ();
|
||||
|
Loading…
Reference in New Issue
Block a user