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;
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;