]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/completion-note-heads-engraver.cc
Merge commit 'origin' into beaming
[lilypond.git] / lily / completion-note-heads-engraver.cc
index 0153ba6b4babe2a6a02417819bc57e3aea16fac8..8734b861c2a2d15eadb9b7367b508da6200619fa 100644 (file)
@@ -148,11 +148,7 @@ Completion_heads_engraver::process_music ()
     {
       note_dur = Duration (nb.main_part_, false);
 
-      Moment next = now;
-      next.main_part_ += note_dur.get_length ();
-
-      get_global_context ()->add_moment_to_process (next);
-      do_nothing_until_ = next.main_part_;
+      do_nothing_until_ = now.main_part_ + note_dur.get_length ();
     }
 
   if (orig)
@@ -170,6 +166,7 @@ Completion_heads_engraver::process_music ()
 
       event->set_property ("pitch", pits);
       event->set_property ("duration", note_dur.smobbed_copy ());
+      event->set_property ("length", Moment (note_dur.get_length ()).smobbed_copy ());
       event->set_property ("duration-log", scm_from_int (note_dur.duration_log ()));
 
       Item *note = make_note_head (event);
@@ -191,7 +188,8 @@ Completion_heads_engraver::process_music ()
     }
 
   left_to_do_ -= note_dur.get_length ();
-
+  if (left_to_do_)
+    get_global_context ()->add_moment_to_process (now.main_part_ + note_dur.get_length());
   /*
     don't do complicated arithmetic with grace notes.
   */
@@ -219,6 +217,8 @@ Completion_heads_engraver::start_translation_timestep ()
       note_events_.clear ();
       prev_notes_.clear ();
     }
+  context ()->set_property ("completionBusy",
+                           ly_bool2scm (note_events_.size ()));
 }
 
 Completion_heads_engraver::Completion_heads_engraver ()
@@ -226,16 +226,21 @@ Completion_heads_engraver::Completion_heads_engraver ()
 }
 
 ADD_TRANSLATOR (Completion_heads_engraver,
-               /* doc */ "This engraver replaces "
-               "@code{Note_heads_engraver}. It plays some trickery to "
-               "break long notes and automatically tie them into the next measure.",
+               /* doc */
+               "This engraver replaces @code{Note_heads_engraver}.  It plays"
+               " some trickery to break long notes and automatically tie them"
+               " into the next measure.",
+
                /* create */
                "NoteHead "
                "Dots "
-               "Tie",
+               "Tie ",
+
                /* read */
                "middleCPosition "
                "measurePosition "
-               "measureLength",
+               "measureLength ",
 
-               /* write */ "");
+               /* write */
+               "completionBusy "
+               );