From 05ecaef595f5aff1de3f46edde90a0644a81e957 Mon Sep 17 00:00:00 2001 From: David Kastrup 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.2