- SCM scm_style = me->get_property ("style");
- if (!scm_is_symbol (scm_style)
- && !to_boolean (me->get_property ("restore-first"))
- && !parens)
+MAKE_SCHEME_CALLBACK (Accidental_interface, horizontal_skylines, 1);
+SCM
+Accidental_interface::horizontal_skylines (SCM smob)
+{
+ Grob *me = unsmob_grob (smob);
+ if (!me->is_live ())
+ return Skyline_pair ().smobbed_copy ();
+
+ /*
+ * Using the print function may trigger a suicide
+ * before line breaking. It is therefore `unpure' (c).
+ * We use the more basic get_stencil.
+ */
+ Stencil *my_stencil = unsmob_stencil (get_stencil (me));
+ Skyline_pair *sky =
+ Skyline_pair::unsmob
+ (Stencil::skylines_from_stencil
+ (my_stencil->smobbed_copy (), 0.0, Y_AXIS));
+
+ if (!sky)
+ return Skyline_pair ().smobbed_copy ();
+
+ SCM alist = me->get_property ("glyph-name-alist");
+ SCM alt = me->get_property ("alteration");
+ string glyph_name = robust_scm2string (ly_assoc_get (alt, alist, SCM_BOOL_F),
+ "");
+ if (glyph_name == "accidentals.flat"
+ || glyph_name == "accidentals.flatflat")