exit internal/note edit mode when clicking on anything that is not a MIDI region view or a note (or various modeless items like markers and the playhead)

git-svn-id: svn://localhost/ardour2/branches/3.0@11333 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis
2012-01-24 16:20:31 +00:00
parent 035074d1b7
commit f3624c1874
2 changed files with 48 additions and 18 deletions

View File

@@ -1224,7 +1224,6 @@ Editor::toggle_internal_editing ()
}
}
void
Editor::register_region_actions ()
{

View File

@@ -534,6 +534,22 @@ Editor::step_mouse_mode (bool next)
}
}
bool
Editor::toggle_internal_editing_from_double_click (GdkEvent* event)
{
if (_drags->active()) {
_drags->end_grab (event);
}
ActionManager::do_action ("MouseMode", "toggle-internal-edit");
/* prevent reversion of edit cursor on button release */
pre_press_cursor = 0;
return true;
}
void
Editor::button_selection (ArdourCanvas::Item* /*item*/, GdkEvent* event, ItemType item_type)
{
@@ -1222,23 +1238,7 @@ Editor::button_press_handler_2 (ArdourCanvas::Item* item, GdkEvent* event, ItemT
return false;
}
bool
Editor::toggle_internal_editing_from_double_click (GdkEvent* event)
{
if (_drags->active()) {
_drags->end_grab (event);
}
Glib::RefPtr<Action> act = ActionManager::get_action (X_("MouseMode"), X_("toggle-internal-edit"));
act->activate ();
/* prevent reversion of edit cursor on button release */
pre_press_cursor = 0;
return true;
}
bool
Editor::button_press_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_type)
{
@@ -1269,6 +1269,37 @@ Editor::button_press_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemTyp
return true;
}
if (internal_editing()) {
switch (item_type) {
case NoteItem:
break;
case RegionItem:
if (!dynamic_cast<MidiRegionView*> (clicked_regionview)) {
ActionManager::do_action ("MouseMode", "toggle-internal-edit");
}
break;
case PlayheadCursorItem:
case MarkerItem:
case TempoMarkerItem:
case MeterMarkerItem:
case MarkerBarItem:
case TempoBarItem:
case MeterBarItem:
case RangeMarkerBarItem:
case CdMarkerBarItem:
case TransportMarkerBarItem:
/* button press on these events never does anything to
change the editing mode.
*/
break;
default:
ActionManager::do_action ("MouseMode", "toggle-internal-edit");
}
}
button_selection (item, event, item_type);
if (!_drags->active () &&