Element* Clef::drop(const DropData& data) { Element* e = data.element; Clef* c = 0; if (e->isClef()) { Clef* clef = toClef(e); ClefType stype = clef->clefType(); if (clefType() != stype) { score()->undoChangeClef(staff(), segment(), stype); c = this; } } else if (e->isAmbitus()) { /*if (!generated())*/ { Measure* meas = measure(); Segment* segm = meas->getSegment(Segment::Type::Ambitus, meas->tick()); if (segm->element(track())) score()->undoRemoveElement(segm->element(track())); Ambitus* r = new Ambitus(score()); r->setParent(segm); r->setTrack(track()); score()->undoAddElement(r); } } delete e; return c; }