From 441c37aaebc52c83d8c21e806785e31e0f8f1245 Mon Sep 17 00:00:00 2001 From: Michele Spagnolo Date: Thu, 6 Feb 2025 09:37:40 +0100 Subject: [PATCH] Ignore hairpin text if hairpin is snapped --- src/engraving/rendering/score/autoplace.cpp | 9 +++++++++ src/engraving/rendering/score/systemlayout.cpp | 4 +--- vtest/scores/hairpins-3.mscz | Bin 0 -> 22232 bytes 3 files changed, 10 insertions(+), 3 deletions(-) create mode 100644 vtest/scores/hairpins-3.mscz diff --git a/src/engraving/rendering/score/autoplace.cpp b/src/engraving/rendering/score/autoplace.cpp index 959da16fe045d..d02cbb7cc1bcd 100644 --- a/src/engraving/rendering/score/autoplace.cpp +++ b/src/engraving/rendering/score/autoplace.cpp @@ -442,6 +442,10 @@ void Autoplace::doAutoplace(const Articulation* item, Articulation::LayoutData* bool Autoplace::itemsShouldIgnoreEachOther(const EngravingItem* itemToAutoplace, const EngravingItem* itemInSkyline) { + if (itemInSkyline->isText() && itemInSkyline->explicitParent() && itemInSkyline->parent()->isSLineSegment()) { + return itemsShouldIgnoreEachOther(itemToAutoplace, itemInSkyline->parentItem()); + } + ElementType type1 = itemToAutoplace->type(); ElementType type2 = itemInSkyline->type(); @@ -449,6 +453,11 @@ bool Autoplace::itemsShouldIgnoreEachOther(const EngravingItem* itemToAutoplace, return type2 != ElementType::KEYSIG; } + if ((type1 == ElementType::DYNAMIC || type1 == ElementType::HAIRPIN_SEGMENT) + && (type2 == ElementType::DYNAMIC || type2 == ElementType::HAIRPIN_SEGMENT)) { + return true; + } + if (type1 == type2) { // Items of same type should ignore each other in most cases static const std::set TEXT_BASED_TYPES_WHICH_IGNORE_EACH_OTHER { diff --git a/src/engraving/rendering/score/systemlayout.cpp b/src/engraving/rendering/score/systemlayout.cpp index fb97186b39a43..58b1493930f46 100644 --- a/src/engraving/rendering/score/systemlayout.cpp +++ b/src/engraving/rendering/score/systemlayout.cpp @@ -2910,9 +2910,7 @@ void SystemLayout::centerElementBetweenStaves(EngravingItem* element, const Syst if (!shapeItem) { return false; } - return shapeItem == element || shapeItem->parentItem(true) == element || shapeItem->type() == element->type() - || shapeItem->isAccidental() || shapeItem == element->ldata()->itemSnappedBefore() - || shapeItem == element->ldata()->itemSnappedAfter(); + return shapeItem->isAccidental() || Autoplace::itemsShouldIgnoreEachOther(element, shapeItem); }); double yStaffDiff = nextStaff->y() - thisStaff->y(); diff --git a/vtest/scores/hairpins-3.mscz b/vtest/scores/hairpins-3.mscz new file mode 100644 index 0000000000000000000000000000000000000000..26d870ac5f61654ec65c12379c7dece52c58a596 GIT binary patch literal 22232 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 p|KN#0|Ajn%!~bT)KXB+H{J--3q~HB}_AieY