From: Jan Nieuwenhuizen <janneke@gnu.org>
Date: Sun, 11 Apr 2004 15:15:51 +0000 (+0000)
Subject: * input/test/title-markup.ly: Add \noPagebreak test.
X-Git-Tag: release/2.3.0~13
X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=23b009d7136ec24fe60591a688866a132404f0e5;p=lilypond.git

* input/test/title-markup.ly: Add \noPagebreak test.

* lily/score-engraver.cc (try_music): Bugfix.
---

diff --git a/ChangeLog b/ChangeLog
index f6d75da182..37e8c13e3e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2004-04-11  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+	* input/test/title-markup.ly: Add \noPagebreak test.
+
+	* lily/score-engraver.cc (try_music): Bugfix.
+
 2004-04-11  Han-Wen Nienhuys   <hanwen@xs4all.nl>
 
 	* lily/main.cc (main_with_guile): call lilypond-main
diff --git a/input/test/title-markup.ly b/input/test/title-markup.ly
index bc0641e5f7..63b1ecd010 100644
--- a/input/test/title-markup.ly
+++ b/input/test/title-markup.ly
@@ -85,6 +85,9 @@ spaceTest = \markup { "two space chars" }
     %% bookTitle = \markup { \fill-line < \huge\bold \title > > }
 }
 
+%% suggest harder :-)
+%% noPagebreak = #(make-event-chord (list (make-penalty-music 0 1e9)))
+
 \book {
     
     \score {
@@ -101,7 +104,12 @@ spaceTest = \markup { "two space chars" }
 	    %% stress page breaking:
 	    %% 35 keep on 3 pages
 	    %% 36 spread evenly over 4 pages
-	    \repeat unfold 36 { a b c d \break }
+	    \repeat unfold 6 { a b c d \break }
+	    
+	    %% FIXME: TODO factor \pagebreak \noPagebreak into regtest
+	    %% Without this, page breaks are better, after measure: 12
+	    \noPagebreak
+	    \repeat unfold 30 { a b c d \break }
 	    c1
 	}
 	\header {
diff --git a/lily/score-engraver.cc b/lily/score-engraver.cc
index 52e6c63ba3..818bb2ac5f 100644
--- a/lily/score-engraver.cc
+++ b/lily/score-engraver.cc
@@ -280,17 +280,12 @@ Score_engraver::try_music (Music *m)
 	forbid_breaks ();
 
       SCM page_pen = command_column_->get_property ("page-penalty");
-      if (is_number (page_pen))
-	{
-	  Real total_pp = ly_scm2double (page_pen);
-	  SCM mpage_pen = m->get_property ("page-penalty");
-	  if (is_number (mpen))
-	    total_pp += ly_scm2double (mpage_pen);
-
-	  // FIXME: this never reaches a grob that System::get_line sees.
-	  command_column_->set_property ("page-penalty",
-					 scm_make_real (total_pp));
-	}
+      Real total_pp = is_number (page_pen) ? ly_scm2double (page_pen) : 0.0;
+      SCM mpage_pen = m->get_property ("page-penalty");
+      if (is_number (mpage_pen))
+	total_pp += ly_scm2double (mpage_pen);
+      
+      command_column_->set_property ("page-penalty", scm_make_real (total_pp));
       return true;
     }
   return false;
diff --git a/lily/system.cc b/lily/system.cc
index 1e6a24446c..00a7caf69b 100644
--- a/lily/system.cc
+++ b/lily/system.cc
@@ -362,27 +362,17 @@ System::get_line ()
 	unsmob_stencil (my_stencil)->translate (o + extra);
 	stencils = scm_cons (my_stencil, stencils);
 
-#if 0
-	// FIXME: never original  
-	if (!penalty || g->original_)
+	if (g->original_)
 	  {
 	    if (Item *it = dynamic_cast <Item*> (g))
 	      {
 		Grob *col = it->get_column ();
 		SCM s = col->get_property ("page-penalty");
-		// FIXME: 'page-penalty is never set
 		// FIXME; page breaking is not discrete at +-10000
 		if (is_number (s)) // && fabs (ly_scm2double (s)) < 10000)
 		  penalty += ly_scm2double (s);
 	      }
 	  }
-#else
-	SCM s = g->get_property ("page-penalty");
-	// FIXME: 'page-penalty is never set
-	// FIXME; page breaking is not discrete at +-10000
-	if (is_number (s)) // && fabs (ly_scm2double (s)) < 10000)
-	  penalty += ly_scm2double (s);
-#endif	
       }
 
   Interval x (extent (this, X_AXIS));