@@ -265,7 +265,7 @@ bool LineSegment::edit(EditData& ed)
265265 return true ;
266266 }
267267
268- undoMoveStartEndAndSnappedItems (moveStart, moveEnd, s1, s2);
268+ undoMoveStartEndAndSnappedItems (ed, moveStart, moveEnd, s1, s2);
269269
270270 EditTimeTickAnchors::updateAnchors (this );
271271 }
@@ -698,7 +698,7 @@ void LineSegment::rebaseAnchors(EditData& ed, Grip grip)
698698 PointF oldStartPos = line ()->linePos (Grip::START, &sys);
699699 PointF oldEndPos = line ()->linePos (Grip::END, &sys);
700700
701- undoMoveStartEndAndSnappedItems (true , true , seg1, seg2);
701+ undoMoveStartEndAndSnappedItems (ed, true , true , seg1, seg2);
702702
703703 rebaseOffsetsOnAnchorChanged (Grip::START, oldStartPos, sys);
704704 rebaseOffsetsOnAnchorChanged (Grip::END, oldEndPos, sys);
@@ -855,12 +855,13 @@ double LineSegment::absoluteFromSpatium(const Spatium& sp) const
855855 return line ()->absoluteFromSpatium (sp);
856856}
857857
858- void LineSegment::undoMoveStartEndAndSnappedItems (bool moveStart, bool moveEnd, Segment* s1, Segment* s2)
858+ void LineSegment::undoMoveStartEndAndSnappedItems (EditData& ed, bool moveStart, bool moveEnd, Segment* s1, Segment* s2)
859859{
860+ bool moveSnapped = !(ed.modifiers & AltModifier);
860861 SLine* thisLine = line ();
861862 if (moveStart) {
862863 Fraction tickDiff = s1->tick () - thisLine->tick ();
863- if (EngravingItem* itemSnappedBefore = ldata ()->itemSnappedBefore ()) {
864+ if (EngravingItem* itemSnappedBefore = ldata ()->itemSnappedBefore (); itemSnappedBefore && moveSnapped ) {
864865 if (itemSnappedBefore->isTextBase ()) {
865866 MoveElementAnchors::moveSegment (itemSnappedBefore, s1, tickDiff);
866867 } else if (itemSnappedBefore->isLineSegment ()) {
@@ -873,7 +874,7 @@ void LineSegment::undoMoveStartEndAndSnappedItems(bool moveStart, bool moveEnd,
873874 }
874875 if (moveEnd) {
875876 Fraction tickDiff = s2->tick () - thisLine->tick2 ();
876- if (EngravingItem* itemSnappedAfter = thisLine->backSegment ()->ldata ()->itemSnappedAfter ()) {
877+ if (EngravingItem* itemSnappedAfter = thisLine->backSegment ()->ldata ()->itemSnappedAfter (); itemSnappedAfter && moveSnapped ) {
877878 if (itemSnappedAfter->isTextBase ()) {
878879 MoveElementAnchors::moveSegment (itemSnappedAfter, s2, tickDiff);
879880 } else if (itemSnappedAfter->isLineSegment ()) {
0 commit comments