@@ -2839,16 +2839,6 @@ void Score::deleteItem(EngravingItem* el)
28392839 case ElementType::KEYSIG :
28402840 {
28412841 KeySig* k = toKeySig (el);
2842- Measure* m = k->measure ();
2843- if (m->isMMRest ()) {
2844- m = m->mmRestFirst ();
2845- if (Segment* s = m->findSegment (SegmentType::KeySig, k->tick ())) {
2846- k = toKeySig (s->element (k->track ()));
2847- }
2848- if (!k || k->generated ()) {
2849- return ;
2850- }
2851- }
28522842 Segment* nextCrSeg = k->segment ()->next1 (SegmentType::ChordRest);
28532843 bool ic = nextCrSeg && nextCrSeg->findAnnotation (ElementType::INSTRUMENT_CHANGE ,
28542844 el->part ()->startTrack (), el->part ()->endTrack () - 1 );
@@ -3132,52 +3122,22 @@ void Score::deleteItem(EngravingItem* el)
31323122 case ElementType::BRACKET :
31333123 undoRemoveBracket (toBracket (el));
31343124 break ;
3135-
3136- case ElementType::LAYOUT_BREAK :
3137- {
3138- undoRemoveElement (el);
3139- LayoutBreak* lb = toLayoutBreak (el);
3140- MeasureBase* mb = lb->measure ();
3141- Measure* m = mb && mb->isMeasure () ? toMeasure (mb) : nullptr ;
3142- if (m && m->isMMRest ()) {
3143- // propagate to original measure
3144- m = m->mmRestLast ();
3145- for (EngravingItem* e : m->el ()) {
3146- if (e->isLayoutBreak () && toLayoutBreak (e)->layoutBreakType () == toLayoutBreak (el)->layoutBreakType ()) {
3147- undoRemoveElement (e);
3148- break ;
3149- }
3150- }
3151- }
3152- }
3153- break ;
3154-
31553125 case ElementType::CLEF :
31563126 {
31573127 Clef* clef = toClef (el);
31583128 Measure* m = clef->measure ();
3159- if (m->isMMRest ()) {
3160- // propagate to original measure
3161- m = m->mmRestLast ();
3162- Segment* s = m->findSegment (SegmentType::Clef, clef->segment ()->tick ());
3163- if (s && s->element (clef->track ())) {
3164- Clef* c = toClef (s->element (clef->track ()));
3165- undoRemoveElement (c);
3166- }
3167- } else {
3168- if (clef->generated ()) {
3169- // find the real clef if this is a cautionary one
3170- if (m && m->prevMeasure ()) {
3171- Fraction tick = m->tick ();
3172- m = m->prevMeasure ();
3173- Segment* s = m->findSegment (SegmentType::Clef, tick);
3174- if (s && s->element (clef->track ())) {
3175- clef = toClef (s->element (clef->track ()));
3176- }
3129+ if (clef->generated ()) {
3130+ // find the real clef if this is a cautionary one
3131+ if (m && m->prevMeasure ()) {
3132+ Fraction tick = m->tick ();
3133+ m = m->prevMeasure ();
3134+ Segment* s = m->findSegment (SegmentType::Clef, tick);
3135+ if (s && s->element (clef->track ())) {
3136+ clef = toClef (s->element (clef->track ()));
31773137 }
31783138 }
3179- undoRemoveElement (clef);
31803139 }
3140+ undoRemoveElement (clef);
31813141 }
31823142 break ;
31833143
@@ -3207,29 +3167,6 @@ void Score::deleteItem(EngravingItem* el)
32073167 }
32083168 }
32093169 break ;
3210- case ElementType::REHEARSAL_MARK :
3211- case ElementType::TEMPO_TEXT :
3212- {
3213- Segment* s = toSegment (el->explicitParent ());
3214- Measure* m = s->measure ();
3215- if (m->isMMRest ()) {
3216- // propagate to original measure/element
3217- m = m->mmRestFirst ();
3218- Segment* ns = m->findSegment (SegmentType::ChordRest, s->tick ());
3219- const auto annotations = ns->annotations (); // make a copy since we alter the list
3220- for (EngravingItem* e : annotations) {
3221- if (e->type () == el->type () && e->track () == el->track ()) {
3222- el = e;
3223- undoRemoveElement (el);
3224- break ;
3225- }
3226- }
3227- } else {
3228- undoRemoveElement (el);
3229- }
3230- }
3231- break ;
3232-
32333170 case ElementType::LYRICSLINE_SEGMENT :
32343171 {
32353172 el = toLyricsLineSegment (el)->lyricsLine ();
@@ -3341,53 +3278,6 @@ void Score::deleteItem(EngravingItem* el)
33413278 }
33423279 }
33433280 break ;
3344-
3345- case ElementType::MARKER :
3346- {
3347- Measure* m = toMeasure (el->explicitParent ());
3348- if (m->isMMRest ()) {
3349- // find corresponding marker in underlying measure
3350- bool found = false ;
3351- // the marker may be in the first measure...
3352- for (EngravingItem* e : m->mmRestFirst ()->el ()) {
3353- if (e->isMarker () && e->subtype () == el->subtype ()) {
3354- undoRemoveElement (e);
3355- found = true ;
3356- break ;
3357- }
3358- }
3359- if (!found) {
3360- // ...or it may be in the last measure
3361- for (EngravingItem* e : m->mmRestLast ()->el ()) {
3362- if (e->isMarker () && e->subtype () == el->subtype ()) {
3363- undoRemoveElement (e);
3364- break ;
3365- }
3366- }
3367- }
3368- }
3369- // whether m is an mmrest or not, we still need to remove el
3370- undoRemoveElement (el);
3371- }
3372- break ;
3373-
3374- case ElementType::JUMP :
3375- {
3376- Measure* m = toMeasure (el->explicitParent ());
3377- if (m->isMMRest ()) {
3378- // find corresponding jump in underlying measure
3379- for (EngravingItem* e : m->mmRestLast ()->el ()) {
3380- if (e->isJump () && e->subtype () == el->subtype ()) {
3381- undoRemoveElement (e);
3382- break ;
3383- }
3384- }
3385- }
3386- // whether m is an mmrest or not, we still need to remove el
3387- undoRemoveElement (el);
3388- }
3389- break ;
3390-
33913281 case ElementType::SYSTEM_LOCK_INDICATOR :
33923282 {
33933283 const SystemLock* systemLock = toSystemLockIndicator (el)->systemLock ();
0 commit comments