enough with umpteen "i18n.h" files. Consolidate on pbd/i18n.h
[ardour.git] / gtk2_ardour / editor_mouse.cc
index 48d838a1db69c96cd2bc621423ff9499277eef02..8a8a9518cf02b9ee912a2cbcf744dd97cda600f8 100644 (file)
@@ -71,7 +71,7 @@
 #include "verbose_cursor.h"
 #include "note.h"
 
-#include "i18n.h"
+#include "pbd/i18n.h"
 
 using namespace std;
 using namespace ARDOUR;
@@ -684,7 +684,7 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT
                        new TempoMarkerDrag (
                                this,
                                item,
-                               Keyboard::modifier_state_contains (event->button.state, Keyboard::CopyModifier)
+                               Keyboard::modifier_state_equals (event->button.state, Keyboard::CopyModifier)
                                ),
                        event
                        );
@@ -697,7 +697,7 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT
                        new MeterMarkerDrag (
                                this,
                                item,
-                               Keyboard::modifier_state_contains (event->button.state, Keyboard::CopyModifier)
+                               Keyboard::modifier_state_equals (event->button.state, Keyboard::CopyModifier)
                                ),
                        event
                        );
@@ -711,13 +711,17 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT
 
        case MarkerBarItem:
        case TempoBarItem:
+       case TempoCurveItem:
        case MeterBarItem:
        case TimecodeRulerItem:
        case SamplesRulerItem:
        case MinsecRulerItem:
        case BBTRulerItem:
-               if (!Keyboard::modifier_state_equals (event->button.state, Keyboard::PrimaryModifier)) {
+               if (!Keyboard::modifier_state_equals (event->button.state, Keyboard::PrimaryModifier)
+                       && !Keyboard::modifier_state_contains (event->button.state, ArdourKeyboard::constraint_modifier())) {
                        _drags->set (new CursorDrag (this, *playhead_cursor, false), event);
+               } else if (Keyboard::modifier_state_contains (event->button.state, ArdourKeyboard::constraint_modifier())) {
+                       _drags->set (new BBTRulerDrag (this, item), event);
                }
                return true;
                break;
@@ -1033,7 +1037,7 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT
                                                if (!prev) {
                                                        _drags->set (new RegionCreateDrag (this, item, parent), event);
                                                } else {
-                                                       prev->set_length (t - prev->position ());
+                                                       prev->set_length (t - prev->position (), get_grid_music_divisions (event->button.state));
                                                }
                                        }
                                } else {
@@ -1333,7 +1337,6 @@ Editor::button_release_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemT
                case RegionItem:
                        show_region_properties ();
                        break;
-
                case TempoMarkerItem: {
                        ArdourMarker* marker;
                        TempoMarker* tempo_marker;
@@ -1438,6 +1441,7 @@ Editor::button_release_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemT
                        case TransportMarkerBarItem:
                        case CdMarkerBarItem:
                        case TempoBarItem:
+                       case TempoCurveItem:
                        case MeterBarItem:
                        case VideoBarItem:
                        case TimecodeRulerItem:
@@ -1547,8 +1551,8 @@ Editor::button_release_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemT
                                mouse_add_new_marker (where, true);
                        }
                        return true;
-
                case TempoBarItem:
+               case TempoCurveItem:
                        if (!_dragging_playhead) {
                                snap_to_with_modifier (where, event);
                                mouse_add_new_tempo_event (where);
@@ -2078,8 +2082,12 @@ Editor::edit_notes (MidiRegionView* mrv)
 void
 Editor::note_edit_done (int r, EditNoteDialog* d)
 {
+       begin_reversible_command (_("edit note(s)"));
+
        d->done (r);
        delete d;
+
+       commit_reversible_command();
 }
 
 void
@@ -2092,7 +2100,7 @@ Editor::visible_order_range (int* low, int* high) const
 
                RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (*i);
 
-               if (!rtv->hidden()) {
+               if (rtv && !rtv->hidden()) {
 
                        if (*high < rtv->order()) {
                                *high = rtv->order ();
@@ -2305,7 +2313,7 @@ Editor::mouse_brush_insert_region (RegionView* rv, framepos_t pos)
 
        RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*>(&rv->get_time_axis_view());
 
-       if (rtv == 0 || !rtv->is_track()) {
+       if (!rtv || !rtv->is_track()) {
                return;
        }
 
@@ -2456,7 +2464,7 @@ Editor::escape ()
                selection->clear ();
        }
 
-       reset_focus ();
+       reset_focus (&contents());
 }
 
 /** Update _join_object_range_state which indicate whether we are over the top