diff --git a/libmscore/input.cpp b/libmscore/input.cpp index c9ae84ed3e5a1..550093ce75913 100644 --- a/libmscore/input.cpp +++ b/libmscore/input.cpp @@ -116,18 +116,19 @@ void InputState::moveInputPos(Element* e) return; Segment* s; - if (e->isChordRest()) - s = static_cast(e)->segment(); - else - s = static_cast(e); - if (s->type() == Element::Type::SEGMENT) { - if (s->measure()->isMMRest()) { - Measure* m = s->measure()->mmRestFirst(); - s = m->findSegment(Segment::Type::ChordRest, m->tick()); - } - _lastSegment = _segment; - _segment = s; + if (e->isSegment()) + s = toSegment(e); + else if (e->isChordRest()) + s = toChordRest(e)->segment(); + + Q_ASSERT(s); + + if (s->measure()->isMMRest()) { + Measure* m = s->measure()->mmRestFirst(); + s = m->findSegment(Segment::Type::ChordRest, m->tick()); } + _lastSegment = _segment; + _segment = s; } //---------------------------------------------------------