Don't allow non-movable meter / tempo markers to be
authorCarl Hetherington <carl@carlh.net>
Thu, 8 Sep 2011 17:49:36 +0000 (17:49 +0000)
committerCarl Hetherington <carl@carlh.net>
Thu, 8 Sep 2011 17:49:36 +0000 (17:49 +0000)
dragged (part of #4313).

git-svn-id: svn://localhost/ardour2/branches/3.0@10067 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/editor_mouse.cc

index 4816c2e04c0c4b9c8f807fed8c28dfbcf2d137bd..9df6de3a8edafacd735f15abf2b1c0e9d36cbd5a 100644 (file)
@@ -589,26 +589,42 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT
                return true;
 
        case TempoMarkerItem:
-               _drags->set (
-                       new TempoMarkerDrag (
-                               this,
-                               item,
-                               Keyboard::modifier_state_contains (event->button.state, Keyboard::CopyModifier)
-                               ),
-                       event
-                       );
-               return true;
+       {
+               TempoMarker* m = reinterpret_cast<TempoMarker*> (item->get_data ("marker"));
+               assert (m);
+               if (m->tempo().movable ()) {
+                       _drags->set (
+                               new TempoMarkerDrag (
+                                       this,
+                                       item,
+                                       Keyboard::modifier_state_contains (event->button.state, Keyboard::CopyModifier)
+                                       ),
+                               event
+                               );
+                       return true;
+               } else {
+                       return false;
+               }
+       }
 
        case MeterMarkerItem:
-               _drags->set (
-                       new MeterMarkerDrag (
-                               this,
-                               item,
-                               Keyboard::modifier_state_contains (event->button.state, Keyboard::CopyModifier)
-                               ),
-                       event
-                       );
-               return true;
+       {
+               MeterMarker* m = reinterpret_cast<MeterMarker*> (item->get_data ("marker"));
+               assert (m);
+               if (m->meter().movable ()) {
+                       _drags->set (
+                               new MeterMarkerDrag (
+                                       this,
+                                       item,
+                                       Keyboard::modifier_state_contains (event->button.state, Keyboard::CopyModifier)
+                                       ),
+                               event
+                               );
+                       return true;
+               } else {
+                       return false;
+               }
+       }
 
        case MarkerBarItem:
        case TempoBarItem: