X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fconstrained-breaking.cc;h=e2d7081497543a0a3b49bf7f9a70ddb8140b857a;hb=47db9a3883d726ca53e2133a3b2298f78dd6a32e;hp=c8b7fc1d748bc06ae2074d33d436d77ab1bdd2e5;hpb=1be9b72e4f00f7273a8e5ff220b710a52f975344;p=lilypond.git diff --git a/lily/constrained-breaking.cc b/lily/constrained-breaking.cc index c8b7fc1d74..e2d7081497 100644 --- a/lily/constrained-breaking.cc +++ b/lily/constrained-breaking.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2012 Joe Neeman + Copyright (C) 2006--2015 Joe Neeman LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -202,8 +202,10 @@ Constrained_breaking::solve (vsize start, vsize end, vsize sys_count) } } /* if we get to here, just put everything on one line */ - warning (_ ("cannot find line breaking that satisfies constraints")); - ret.push_back (space_line (0, end_brk)); + if (sys_count > 0) { + warning (_ ("cannot find line breaking that satisfies constraints")); + ret.push_back (space_line (0, end_brk)); + } return ret; } @@ -291,9 +293,11 @@ Constrained_breaking::line_details (vsize start, vsize end, vsize sys_count) } /* if we get to here, just put everything on one line */ - Line_details details; - fill_line_details (&details, 0, end_brk); - ret.push_back (details); + if (sys_count > 0) { + Line_details details; + fill_line_details (&details, 0, end_brk); + ret.push_back (details); + } return ret; } @@ -556,7 +560,7 @@ Line_details::Line_details (Prob *pb, Output_def *paper) if (scm_is_pair (footnotes)) for (SCM s = footnotes; scm_is_pair (s); s = scm_cdr (s)) { - Stencil *sten = unsmob_stencil (scm_caddar (s)); + Stencil *sten = Stencil::unsmob (scm_caddar (s)); if (!sten) { programming_error ("expecting stencil, got empty pointer"); @@ -567,7 +571,9 @@ Line_details::Line_details (Prob *pb, Output_def *paper) last_column_ = 0; force_ = 0; - Interval stencil_extent = unsmob_stencil (pb->get_property ("stencil"))->extent (Y_AXIS); + Stencil *st = Stencil::unsmob (pb->get_property ("stencil")); + Interval stencil_extent = st->is_empty (Y_AXIS) ? Interval (0, 0) + : st->extent (Y_AXIS); shape_ = Line_shape (stencil_extent, stencil_extent); // pretend it goes all the way across tallness_ = 0; bottom_padding_ = 0;