foot_stencil = add_footnotes_to_footer (footnotes, foot_stencil, pb);
}
else
- warning ("A page layout problem has been initiated that cannot accommodate footnotes.");
+ warning (_ ("A page layout problem has been initiated that cannot accommodate footnotes."));
header_height_ = head ? head->extent (Y_AXIS).length () : 0;
footer_height_ = foot_stencil.extent (Y_AXIS).length ();
void
Page_layout_problem::append_system (System *sys, Spring const &spring, Real indent, Real padding)
{
- Grob *align = sys->get_vertical_alignment ();
+ Grob *align = unsmob_grob (sys->get_object ("vertical-alignment"));
if (!align)
return;
spring_copy.ensure_min_distance (minimum_distance);
springs_.push_back (spring_copy);
+ if (elts.size () && !is_spaceable (elts[0]))
+ {
+ // store the minimum distance, considering relative indents,
+ // for a loose line
+ Skyline first_skyline (UP);
+ Skyline_pair *sky = Skyline_pair::unsmob (elts[0]->get_property ("vertical-skylines"));
+ if (sky)
+ first_skyline.merge ((*sky)[UP]);
+ first_skyline.shift (indent);
+ minimum_distance = first_skyline.distance (bottom_skyline_) - bottom_loose_baseline_;
+ }
bottom_skyline_ = down_skyline;
- elements_.push_back (Element (elts, minimum_offsets, padding));
+ elements_.push_back (Element (elts, minimum_offsets, minimum_distance, padding));
// Add the springs for the VerticalAxisGroups in this system.
found_spaceable_staff = true;
spring_idx++;
}
- else
+ else // ! is_spaceable
{
if (loose_lines.empty ())
loose_lines.push_back (last_spaceable_line);
{
// distance to the final line in the preceding system,
// including 'system-system-spacing 'padding
- min_dist = (Axis_group_interface::minimum_distance (loose_lines.back (),
- staff, Y_AXIS)
- + elements_[i].padding);
+ min_dist = elements_[i].min_distance + elements_[i].padding;
// A null line to break any staff-affinity for the previous system
loose_line_min_distances.push_back (0.0);
loose_lines.push_back (0);
}
else if (!last_title_extent.is_empty ())
// distance to the preceding title,
- // including 'markup-system-spacing 'padding
+ // including 'markup-system-wg 'padding
min_dist = (staff->extent (staff, Y_AXIS)[UP] - last_title_extent[DOWN]
+ elements_[i].padding);
else // distance to the top margin