]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/page-spacing.cc
Merge branch 'master' of ssh://git.sv.gnu.org/srv/git/lilypond
[lilypond.git] / lily / page-spacing.cc
index 8919257caa54c493f7d600af56831987a6b9524c..f78cc1795aef00d30b5811557d5269c1846fab25 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2009 Joe Neeman <joeneeman@gmail.com>
+  Copyright (C) 2006--2010 Joe Neeman <joeneeman@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -245,6 +245,18 @@ Page_spacer::calc_subproblem (vsize page, vsize line)
            penalty += lines_[page_start-1].page_penalty_
              + (page % 2 == 0) ? lines_[page_start-1].turn_penalty_ : 0;
 
+         /* Deal with widow/orphan lines */
+         /* Last line of paragraph is first line on the new page */
+         if ((page_start > 0) &&
+             (page_start < lines_.size ()) &&
+             (lines_[page_start].last_markup_line_))
+                 penalty += breaker_->orphan_penalty ();
+         /* First line of paragraph is last line on the previous page */
+         if ((page_start > 0) &&
+             (page_start < lines_.size ()) &&
+             (lines_[page_start-1].first_markup_line_))
+                 penalty += breaker_->orphan_penalty ();
+
          demerits += penalty;
          if (demerits < cur.demerits_ || page_start == line)
            {