From 017c51db7511385d78cb20f9f2d62407e0dcd545 Mon Sep 17 00:00:00 2001 From: Laurent Pugin Date: Sun, 2 Jun 2024 20:39:30 +0200 Subject: [PATCH] Take into account the glyph anchors in beams --- src/beam.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/beam.cpp b/src/beam.cpp index 5e30dfde1c..6e643e4ac1 100644 --- a/src/beam.cpp +++ b/src/beam.cpp @@ -1882,9 +1882,16 @@ void BeamElementCoord::SetDrawingStemDir(data_STEMDIRECTION stemDir, const Staff m_stem->SetDrawingStemDir(stemDir); m_yBeam = m_element->GetDrawingY(); - m_x += (STEMDIRECTION_up == stemDir) - ? 2 * m_element->GetDrawingRadius(doc) - doc->GetDrawingStemWidth(staff->m_drawingStaffSize) / 2 - : doc->GetDrawingStemWidth(staff->m_drawingStaffSize) / 2; + + // Move and take into account the glyph cut-outs + if (STEMDIRECTION_up == stemDir) { + m_x += stemInterface->GetStemUpSE(doc, staff->m_drawingStaffSize, interface->m_cueSize).x; + m_x -= doc->GetDrawingStemWidth(staff->m_drawingStaffSize) / 2; + } + else { + m_x += stemInterface->GetStemDownNW(doc, staff->m_drawingStaffSize, interface->m_cueSize).x; + m_x += doc->GetDrawingStemWidth(staff->m_drawingStaffSize) / 2; + } if (m_tabDurSym && !m_closestNote) { m_yBeam = m_tabDurSym->GetDrawingY();