void AutomationTrackView::dropEvent( QDropEvent * _de ) { QString type = StringPairDrag::decodeKey( _de ); QString val = StringPairDrag::decodeValue( _de ); if( type == "automatable_model" ) { AutomatableModel * mod = dynamic_cast<AutomatableModel *>( Engine::projectJournal()-> journallingObject( val.toInt() ) ); if( mod != NULL ) { MidiTime pos = MidiTime( trackContainerView()-> currentPosition() + ( _de->pos().x() - getTrackContentWidget()->x() ) * MidiTime::ticksPerTact() / static_cast<int>( trackContainerView()->pixelsPerTact() ) ) .toAbsoluteTact(); if( pos.getTicks() < 0 ) { pos.setTicks( 0 ); } TrackContentObject * tco = getTrack()->createTCO( pos ); AutomationPattern * pat = dynamic_cast<AutomationPattern *>( tco ); pat->addObject( mod ); pat->movePosition( pos ); } } update(); }