- if (!stem_l () || !rest_b ())
- return;
-
- Beam * b = stem_l ()->beam_l ();
- if (!b || !b->stem_count ())
- return;
-
- /* ugh. Should be done by beam. */
- Direction d = stem_l ()->get_direction ();
- Real beamy = (stem_l ()->hpos_f () - b->stem(0)->hpos_f ()) * b->slope_f_ + b->left_y_;
-
- SCM s = get_elt_property ("rests");
- Score_element * se = unsmob_element (gh_car (s));
- Staff_symbol_referencer *str = dynamic_cast<Staff_symbol_referencer*> (se);
-
- Real staff_space = str->staff_line_leading_f ();
- Real rest_dim = extent (Y_AXIS)[d]*2.0 /staff_space ;
-
- Real minimum_dist
- = paper_l ()->get_var ("restcollision_minimum_beamdist") ;
- Real dist =
- minimum_dist + -d * (beamy - rest_dim) >? 0;
-
- int stafflines = str->lines_i ();
+ extract_grob_set (me, "note-heads", heads);
+ Grob *acc = 0;
+ for (vsize i = 0; i < heads.size (); i++)
+ {
+ Grob *h = heads[i];
+ acc = h ? unsmob_grob (h->get_object ("accidental-grob")) : 0;
+ if (acc)
+ break;
+ }