]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/melody-spanner.cc
nitpicks
[lilypond.git] / lily / melody-spanner.cc
index d0544ab2d21e6a4d90a7af969c21df463306e9b4..103a5c642744658ee6ad84d114605ebafc1ab69b 100644 (file)
@@ -27,7 +27,7 @@ Melody_spanner::calc_neutral_stem_direction (SCM smob)
   Grob *stem = unsmob_grob (smob);
   Grob *me =  unsmob_grob (stem->get_object ("melody-spanner"));
   if (!me || !me->is_live ())
-    return SCM_UNSPECIFIED;
+    return scm_from_int (DOWN);
   
   extract_grob_set (me, "stems", stems);
 
@@ -41,6 +41,7 @@ Melody_spanner::calc_neutral_stem_direction (SCM smob)
         &&  !dirs[next_nonneutral])
     next_nonneutral++;
 
+  SCM retval = SCM_EOL;
   while (last_nonneutral == VPOS || last_nonneutral < dirs.size () - 1) 
     {
       Direction d1 = CENTER;
@@ -61,8 +62,12 @@ Melody_spanner::calc_neutral_stem_direction (SCM smob)
        total = to_dir (me->get_property ("neutral-direction"));
       
       for (vsize i = last_nonneutral + 1; i <  next_nonneutral; i++)
-       stems[i]->set_property ("neutral-direction", scm_from_int (total));
-
+       {
+         if (stems[i] == stem)
+           retval = scm_from_int (total);
+         else
+           stems[i]->set_property ("neutral-direction", scm_from_int (total));
+       }
 
       last_nonneutral = next_nonneutral;
       while (last_nonneutral < dirs.size ()
@@ -76,8 +81,7 @@ Melody_spanner::calc_neutral_stem_direction (SCM smob)
        next_nonneutral++;
     }
 
-  me->suicide ();
-  return SCM_UNSPECIFIED;
+  return retval;
 }
 
 void
@@ -88,7 +92,7 @@ Melody_spanner::add_stem (Grob *me, Grob *stem)
   stem->set_property ("neutral-direction", Melody_spanner::calc_neutral_stem_direction_proc);
 }
 
-ADD_INTERFACE (Melody_spanner, "melody-spanner-interface",
+ADD_INTERFACE (Melody_spanner,
               "Context dependent typesetting decisions.",
 
               "stems "