]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-1.5.26
authorfred <fred>
Wed, 27 Mar 2002 02:04:38 +0000 (02:04 +0000)
committerfred <fred>
Wed, 27 Mar 2002 02:04:38 +0000 (02:04 +0000)
lily/beam.cc

index 8bedaa22aff5b318e4131aa76a425e0fefcafd35..1c0ed8e545d44e2efd64822e5ed2400aa8bba642 100644 (file)
@@ -78,14 +78,35 @@ Beam::before_line_breaking (SCM smob)
 {
   Grob * me =  unsmob_grob (smob);
 
-  // Why?
   /*
-    Why what?  Why the warning (beams with less than 2 stems are
-    degenerate beams, should never happen), or why would this ever
-    happen (don't know). */
+    Beams with less than 2 two stems don't make much sense, but could happen
+    when you do
+
+    [r8 c8 r8].
+    
+    For a beam that  only has one stem, we try to do some disappearance magic:
+    we revert the flag, and move on to The Eternal Engraving Fields.*/
+  
+  
   if (visible_stem_count (me) < 2)
     {
-      warning (_ ("beam has less than two stems"));
+      warning (_ ("beam has less than two visible stems"));
+
+      SCM stems = me->get_grob_property ("stems");
+      if (scm_ilength (stems) == 1)
+       {
+         warning (_("Beam has less than two stems. Removing beam."));
+
+         unsmob_grob (gh_car (stems))->remove_grob_property ("beam");
+         me->suicide ();
+
+         return SCM_UNSPECIFIED;
+       }
+      else if (scm_ilength (stems) == 0)
+       {
+         me->suicide ();
+         return SCM_UNSPECIFIED;         
+       }
     }
   if (visible_stem_count (me) >= 1)
     {