]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/stem.cc
Issue 5167/6: Changes: show \markup xxx = ... \etc assignments
[lilypond.git] / lily / stem.cc
index 2fad60d10598f139753cfa87e5c11bab0feb8605..947a429c23f472770474dd10c9fb8abb8a4053e6 100644 (file)
@@ -91,7 +91,7 @@ Stem::get_beaming (Grob *me, Direction d)
 
   SCM lst = index_get_cell (pair, d);
 
-  int len = scm_ilength (lst);
+  int len = scm_ilength (lst); // -1 for dotted lists!
   return max (len, 0);
 }
 
@@ -266,9 +266,9 @@ Stem::add_head (Grob *me, Grob *n)
 {
   n->set_object ("stem", me->self_scm ());
 
-  if (Note_head::has_interface (n))
+  if (has_interface<Note_head> (n))
     Pointer_group_interface::add_grob (me, ly_symbol2scm ("note-heads"), n);
-  else if (Rest::has_interface (n))
+  else if (has_interface<Rest> (n))
     Pointer_group_interface::add_grob (me, ly_symbol2scm ("rests"), n);
 }
 
@@ -552,6 +552,7 @@ Stem::calc_positioning_done (SCM smob)
     }
   bool parity = true;
   Real lastpos = Real (Staff_symbol_referencer::get_position (heads[0]));
+  int threshold = robust_scm2int (me->get_property ("note-collision-threshold"), 1);
   for (vsize i = 1; i < heads.size (); i++)
     {
       Real p = Staff_symbol_referencer::get_position (heads[i]);
@@ -561,7 +562,7 @@ Stem::calc_positioning_done (SCM smob)
         dy should always be 0.5, 0.0, 1.0, but provide safety margin
         for rounding errors.
       */
-      if (dy < 1.1)
+      if (dy < 0.1 + threshold)
         {
           if (parity)
             {
@@ -1184,6 +1185,7 @@ ADD_INTERFACE (Stem,
                "neutral-direction "
                "no-stem-extend "
                "note-heads "
+               "note-collision-threshold "
                "positioning-done "
                "rests "
                "stem-begin-position "