diff --git a/src/engraving/dom/navigate.cpp b/src/engraving/dom/navigate.cpp index 0f4cf07b86b78..bd18eebc2cac1 100644 --- a/src/engraving/dom/navigate.cpp +++ b/src/engraving/dom/navigate.cpp @@ -989,7 +989,7 @@ EngravingItem* Score::prevElement() if (previousElement->type() != ElementType::VBOX && previousElement->type() != ElementType::HBOX && previousElement->type() != ElementType::TBOX - && previousElement->type() == ElementType::FBOX) { + && previousElement->type() != ElementType::FBOX) { return previousElement; } diff --git a/src/engraving/dom/segment.cpp b/src/engraving/dom/segment.cpp index 1f6af1be75398..4684a9caec64d 100644 --- a/src/engraving/dom/segment.cpp +++ b/src/engraving/dom/segment.cpp @@ -2273,14 +2273,19 @@ EngravingItem* Segment::prevElement(staff_idx_t activeStaff) } } - EngravingItem* prev = nullptr; + EngravingItem* prevAnnotation = nullptr; if (e->explicitParent() == this) { - prev = prevAnnotation(e); + prevAnnotation = this->prevAnnotation(e); } - - if (prev) { - return prev; + if (prevAnnotation) { + return prevAnnotation; + } else if (const Segment* prevSeg = prev1()) { + const Spanner* s = prevSeg->lastSpanner(activeStaff); + if (s) { + return s->spannerSegments().back(); + } } + if (notChordRestType()) { EngravingItem* lastEl = lastElementOfSegment(activeStaff); if (lastEl) {