From: Joe Neeman Date: Fri, 30 Mar 2007 02:32:01 +0000 (+1000) Subject: Fix #341. X-Git-Tag: release/2.11.24-1~8^2~4^2~1 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=108a8f2ad6ab91ca070c2b5ddafb697997e0f42c;p=lilypond.git Fix #341. Consider arpeggios as cross-staff iff they were created by span-arpeggio-engraver. --- diff --git a/lily/align-interface.cc b/lily/align-interface.cc index 45761f40c8..4d885b7a38 100644 --- a/lily/align-interface.cc +++ b/lily/align-interface.cc @@ -188,9 +188,7 @@ Align_interface::get_extents_aligned_translates (Grob *me, line_break_details = me_spanner->get_bound (LEFT)->get_property ("line-break-system-details"); if (!me->get_system () && !pure) - me->warning (_ ("vertical alignment called before line-breaking.\n" - "Only do cross-staff spanners with PianoStaff.")); - + me->programming_error ("vertical alignment called before line-breaking"); } Direction stacking_dir = robust_scm2dir (me->get_property ("stacking-dir"), diff --git a/lily/arpeggio.cc b/lily/arpeggio.cc index 56066912fb..b501117624 100644 --- a/lily/arpeggio.cc +++ b/lily/arpeggio.cc @@ -165,23 +165,6 @@ Arpeggio::pure_height (SCM smob, SCM, SCM) return height (smob); } -MAKE_SCHEME_CALLBACK (Arpeggio, calc_cross_staff, 1); -SCM -Arpeggio::calc_cross_staff (SCM smob) -{ - Grob *me = unsmob_grob (smob); - extract_grob_set (me, "stems", stems); - - for (vsize i = 1; i < stems.size (); i++) - { - Grob *s1 = Staff_symbol_referencer::get_staff_symbol (stems[i-1]); - Grob *s2 = Staff_symbol_referencer::get_staff_symbol (stems[i]); - if (s1 != s2) - return SCM_BOOL_T; - } - return SCM_BOOL_F; -} - ADD_INTERFACE (Arpeggio, "Functions and settings for drawing an arpeggio symbol (a wavy line left to noteheads.", diff --git a/lily/include/arpeggio.hh b/lily/include/arpeggio.hh index 7b0fe264b6..c18eb10c3e 100644 --- a/lily/include/arpeggio.hh +++ b/lily/include/arpeggio.hh @@ -21,7 +21,6 @@ public: DECLARE_SCHEME_CALLBACK (width, (SCM)); DECLARE_SCHEME_CALLBACK (height, (SCM)); DECLARE_SCHEME_CALLBACK (pure_height, (SCM, SCM, SCM)); - DECLARE_SCHEME_CALLBACK (calc_cross_staff, (SCM)); DECLARE_GROB_INTERFACE(); }; diff --git a/lily/span-arpeggio-engraver.cc b/lily/span-arpeggio-engraver.cc index a465b7da11..203a5d0d4d 100644 --- a/lily/span-arpeggio-engraver.cc +++ b/lily/span-arpeggio-engraver.cc @@ -58,7 +58,10 @@ Span_arpeggio_engraver::process_acknowledged () */ if (!span_arpeggio_ && arpeggios_.size () > 1 && to_boolean (get_property ("connectArpeggios"))) - span_arpeggio_ = make_item ("Arpeggio", SCM_EOL); + { + span_arpeggio_ = make_item ("Arpeggio", SCM_EOL); + span_arpeggio_->set_property ("cross-staff", SCM_BOOL_T); + } } void diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm index 82d377ccdc..196b550158 100644 --- a/scm/define-grobs.scm +++ b/scm/define-grobs.scm @@ -153,7 +153,6 @@ (script-priority . 0) (side-axis . ,X) (staff-position . 0.0) - (cross-staff . ,ly:arpeggio::calc-cross-staff) (Y-extent . ,ly:arpeggio::height) (meta . ((class . Item) (interfaces . (arpeggio-interface