]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/tuplet-bracket.cc
use PaperColumns instead of SeparationItems
[lilypond.git] / lily / tuplet-bracket.cc
index 318d3012b7a8351343d76d844ebc75c30937f83a..b27c783208291ff2b29311e06b39ebf3f926fbbf 100644 (file)
@@ -91,8 +91,10 @@ Tuplet_bracket::parallel_beam (Grob *me_grob, vector<Grob*> const &cols,
   Drul_array<Grob*> stems (Note_column::get_stem (cols[0]),
                           Note_column::get_stem (cols.back ()));
 
-  if (dynamic_cast<Item*> (stems[RIGHT])->get_column ()
-      != me->get_bound (RIGHT)->get_column ())
+  if (!stems[RIGHT]
+      || !stems[LEFT]
+      || (dynamic_cast<Item*> (stems[RIGHT])->get_column ()
+         != me->get_bound (RIGHT)->get_column ()))
     return 0;
 
   Drul_array<Grob*> beams;
@@ -750,9 +752,21 @@ Tuplet_bracket::calc_cross_staff (SCM smob)
   Grob *me = unsmob_grob (smob);
   Grob *staff_symbol = 0;
   extract_grob_set (me, "note-columns", cols);
+  bool equally_long = false;
+  Grob *par_beam = parallel_beam (me, cols, &equally_long);
+
+  if (par_beam)
+    return par_beam->get_property ("cross-staff");
+
   for (vsize i = 0; i < cols.size (); i++)
     {
       Grob *stem = unsmob_grob (cols[i]->get_object ("stem"));
+      if (!stem)
+       continue;
+      
+      if (to_boolean (stem->get_property ("cross-staff")))
+       return SCM_BOOL_T;
+
       Grob *stem_staff = Staff_symbol_referencer::get_staff_symbol (stem);
       if (staff_symbol && (stem_staff != staff_symbol))
         return SCM_BOOL_T;