13
0

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:
Carl Hetherington 2010-07-09 00:57:22 +00:00
parent 4dc475776d
commit 01c78d5620
3 changed files with 24 additions and 10 deletions

View File

@ -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) {

View File

@ -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;

View File

@ -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 ();