From 05ecaef595f5aff1de3f46edde90a0644a81e957 Mon Sep 17 00:00:00 2001
From: David Kastrup <dak@gnu.org>
Date: Sat, 4 Oct 2014 01:12:55 +0200
Subject: [PATCH] Issue 660: ossia staff doesn't stop at correct horizontal
 position

---
 lily/staff-symbol.cc | 19 ++++++++++++++-----
 scm/define-grobs.scm |  1 +
 2 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/lily/staff-symbol.cc b/lily/staff-symbol.cc
index a5db48de46..e2c199633a 100644
--- a/lily/staff-symbol.cc
+++ b/lily/staff-symbol.cc
@@ -65,11 +65,19 @@ Staff_symbol::print (SCM smob)
       else
         {
           Item *x = sp->get_bound (d);
-
-          span_points[d] = ((!x->break_status_dir ()
-                             && !x->extent (x, X_AXIS).is_empty ())
-                            ? Paper_column::break_align_width (x, ly_symbol2scm ("break-alignment"))[d]
-                            : x->relative_coordinate (common, X_AXIS));
+          if (x->extent (x, X_AXIS).is_empty ()
+              || (x->break_status_dir () && sp->broken_neighbor (d)))
+            span_points[d] = x->relative_coordinate (common, X_AXIS);
+          // What the default implementation of to-barline does for
+          // spanners is not really in usefully recognizable shape by
+          // now, so we just reimplement.
+          else
+            {
+              SCM where = (d == RIGHT
+                           ? me->get_property ("break-align-symbols")
+                           : ly_symbol2scm ("break-alignment"));
+              span_points[d] = Paper_column::break_align_width (x, where)[d];
+            }
         }
 
       span_points[d] -= d * t / 2;
@@ -372,6 +380,7 @@ ADD_INTERFACE (Staff_symbol,
                " @code{width} property.",
 
                /* properties */
+               "break-align-symbols "
                "ledger-extra "
                "ledger-line-thickness "
                "ledger-positions "
diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm
index 65063d7af5..de745d5f5a 100644
--- a/scm/define-grobs.scm
+++ b/scm/define-grobs.scm
@@ -2060,6 +2060,7 @@
 
     (StaffSymbol
      . (
+        (break-align-symbols . (staff-bar break-alignment))
         (layer . 0)
         (ledger-line-thickness . (1.0 . 0.1))
         (line-count . 5)
-- 
2.39.5