- Interval ext = ly_scm2interval (Axis_group_interface::group_extent_callback
- (me->self_scm (), gh_int2scm (Y_AXIS)));
- Real l = ext.length () / staff_space;
-
- if (ext.empty_b ()
- || (gh_number_p (c) && l <= gh_scm2double (c)))
+
+ SCM elts = me->get_property ("elements");
+ Grob * common = common_refpoint_of_list (elts, me, Y_AXIS);
+
+ Interval ext;
+ for (SCM s = elts; scm_is_pair (s); s = scm_cdr (s))
+ {
+ Spanner * sp = unsmob_spanner (scm_car (s));
+ if (sp &&
+ sp->get_bound (LEFT) == me->get_bound (LEFT))
+ {
+ Interval dims = sp->extent (common, Y_AXIS);
+ if (!dims.is_empty ())
+ ext.unite (dims);
+ }
+ }
+
+ ext -= me->relative_coordinate (common, Y_AXIS);
+
+ Real len = ext.length () / staff_space;
+
+ if (ext.is_empty ()
+ || (robust_scm2double (me->get_property ("collapse-height"), 0.0) >= len))