#include "ardour/profile.h"
#include "ardour/route.h"
#include "ardour/audio_track.h"
-#include "ardour/audio_diskstream.h"
-#include "ardour/midi_diskstream.h"
#include "ardour/playlist.h"
#include "ardour/audioplaylist.h"
#include "ardour/audioregion.h"
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:
case AutomationTrackItem:
{
TimeAxisView* parent = clicked_axisview->get_parent ();
- if (parent && dynamic_cast<MidiTimeAxisView*> (parent)) {
+ AutomationTimeAxisView* atv = dynamic_cast<AutomationTimeAxisView*> (clicked_axisview);
+ assert (atv);
+ if (parent && dynamic_cast<MidiTimeAxisView*> (parent) && atv->show_regions ()) {
/* create a MIDI region so that we have somewhere to put automation */
_drags->set (new RegionCreateDrag (this, item, parent), event);
} else {
popup_track_context_menu (1, event->button.time, item_type, false);
break;
+ case ControlPointItem:
+ popup_control_point_context_menu (item, event);
+ break;
+
#ifdef WITH_CMT
case ImageFrameItem:
popup_imageframe_edit_menu(1, event->button.time, item, true) ;
break;
case ControlPointItem:
- if (eff == MouseGain) {
- remove_gain_control_point (item, event);
- } else {
- remove_control_point (item, event);
- }
+ remove_control_point (item);
break;
case NoteItem:
}
bool
-Editor::leave_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_type)
+Editor::leave_handler (ArdourCanvas::Item* item, GdkEvent*, ItemType item_type)
{
AutomationLine* al;
ControlPoint* cp;
return true;
}
-void
-Editor::remove_gain_control_point (ArdourCanvas::Item*item, GdkEvent* /*event*/)
+bool
+Editor::can_remove_control_point (ArdourCanvas::Item* item)
{
ControlPoint* control_point;
/*NOTREACHED*/
}
- // We shouldn't remove the first or last gain point
- if (control_point->line().is_last_point(*control_point) ||
- control_point->line().is_first_point(*control_point)) {
- return;
+ AutomationLine& line = control_point->line ();
+ if (dynamic_cast<AudioRegionGainLine*> (&line)) {
+ /* we shouldn't remove the first or last gain point in region gain lines */
+ if (line.is_last_point(*control_point) || line.is_first_point(*control_point)) {
+ return false;
+ }
}
- control_point->line().remove_point (*control_point);
+ return true;
}
void
-Editor::remove_control_point (ArdourCanvas::Item* item, GdkEvent* /*event*/)
+Editor::remove_control_point (ArdourCanvas::Item* item)
{
+ if (!can_remove_control_point (item)) {
+ return;
+ }
+
ControlPoint* control_point;
if ((control_point = reinterpret_cast<ControlPoint *> (item->get_data ("control_point"))) == 0) {
}
void
-Editor::add_region_drag (ArdourCanvas::Item* item, GdkEvent* event, RegionView* region_view)
+Editor::add_region_drag (ArdourCanvas::Item* item, GdkEvent*, RegionView* region_view)
{
assert (region_view);
}
void
-Editor::add_region_copy_drag (ArdourCanvas::Item* item, GdkEvent* event, RegionView* region_view)
+Editor::add_region_copy_drag (ArdourCanvas::Item* item, GdkEvent*, RegionView* region_view)
{
assert (region_view);
}
void
-Editor::add_region_brush_drag (ArdourCanvas::Item* item, GdkEvent* event, RegionView* region_view)
+Editor::add_region_brush_drag (ArdourCanvas::Item* item, GdkEvent*, RegionView* region_view)
{
assert (region_view);
* used by the `join object/range' tool mode.
*/
void
-Editor::update_join_object_range_location (double x, double y)
+Editor::update_join_object_range_location (double /*x*/, double y)
{
/* XXX: actually, this decides based on whether the mouse is in the top or bottom half of a RouteTimeAxisView;
entered_{track,regionview} is not always setup (e.g. if the mouse is over a TimeSelection), and to get a Region