]> git.donarmstrong.com Git - lilypond.git/commitdiff
Fix #341.
authorJoe Neeman <joeneeman@gmail.com>
Fri, 30 Mar 2007 02:32:01 +0000 (12:32 +1000)
committerJoe Neeman <joeneeman@gmail.com>
Mon, 16 Apr 2007 23:25:34 +0000 (09:25 +1000)
Consider arpeggios as cross-staff iff they were created by
span-arpeggio-engraver.

lily/align-interface.cc
lily/arpeggio.cc
lily/include/arpeggio.hh
lily/span-arpeggio-engraver.cc
scm/define-grobs.scm

index 45761f40c8a6cd7a2ffa8ec1dd83bcb1f114f971..4d885b7a38de0896773058fb10582b137315e13d 100644 (file)
@@ -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"),
index 56066912fb6e156a87ba938cba89bfc1118b7592..b50111762498d5b941062e4d9b9c4534115ab790 100644 (file)
@@ -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.",
 
index 7b0fe264b66c35ce7d031025e392e52b2d2888fd..c18eb10c3ebf121199adb49e120e1583f639530b 100644 (file)
@@ -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();
 };
 
index 97c2f6b87079289eb1390f74c5b0cf2d95dffa4c..fa2e91eec363d3c3b437ad2c20da41378bd22ed2 100644 (file)
@@ -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
index 82d377ccdce1b125f6b2fe54fcc7071b0c415313..196b5501584c3956287745533d28756d798725b2 100644 (file)
        (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