void ScoreView::lyricsReturn() { Lyrics* lyrics = (Lyrics*)editObject; Segment* segment = lyrics->segment(); endEdit(); _score->startCmd(); Lyrics* oldLyrics = lyrics; lyrics = static_cast<Lyrics*>(Element::create(lyrics->type(), _score)); lyrics->setTrack(oldLyrics->track()); lyrics->setParent(segment->element(oldLyrics->track())); lyrics->setNo(oldLyrics->no() + 1); _score->undoAddElement(lyrics); _score->select(lyrics, SELECT_SINGLE, 0); startEdit(lyrics, -1); mscore->changeState(mscoreState()); adjustCanvasPosition(lyrics, false); _score->setLayoutAll(true); _score->end2(); _score->end1(); }
void ScoreView::lyricsReturn() { Lyrics* lyrics = (Lyrics*)editObject; Segment* segment = lyrics->segment(); endEdit(); _score->startCmd(); Lyrics* oldLyrics = lyrics; int newVerse; if (lyrics->placeAbove()) { newVerse = oldLyrics->no() - 1; if (newVerse == -1) { // raise all lyrics above newVerse = 0; for (Segment* s = _score->firstSegment(Segment::Type::ChordRest); s; s = s->next1(Segment::Type::ChordRest)) { ChordRest* cr = s->cr(lyrics->track()); if (cr) { for (Lyrics* l : cr->lyrics()) { if (l->placement() == oldLyrics->placement()) l->undoChangeProperty(P_ID::VERSE, l->no() + 1); } } } } } else newVerse = oldLyrics->no() + 1; lyrics = static_cast<Lyrics*>(Element::create(lyrics->type(), _score)); lyrics->setTrack(oldLyrics->track()); lyrics->setParent(segment->element(oldLyrics->track())); lyrics->setPlacement(oldLyrics->placement()); lyrics->setNo(newVerse); _score->undoAddElement(lyrics); _score->select(lyrics, SelectType::SINGLE, 0); startEdit(lyrics, Grip::NO_GRIP); mscore->changeState(mscoreState()); adjustCanvasPosition(lyrics, false); _score->setLayoutAll(); _score->update(); }