TRANSLATOR_DECLARATIONS (Note_head_line_engraver);
protected:
- DECLARE_ACKNOWLEDGER (rhythmic_head);
+ void acknowledge_rhythmic_head (Grob_info);
void process_acknowledged ();
void stop_translation_timestep ();
Grob *last_head_;
};
-Note_head_line_engraver::Note_head_line_engraver ()
+Note_head_line_engraver::Note_head_line_engraver (Context *c)
+ : Engraver (c)
{
line_ = 0;
follow_ = false;
Note_head_line_engraver::acknowledge_rhythmic_head (Grob_info info)
{
head_ = info.grob ();
- Context *tr = context ();
-
- while (tr && !tr->is_alias (ly_symbol2scm ("Staff")))
- tr = tr->get_parent_context ();
-
+ Context *tr = find_context_above (context (), ly_symbol2scm ("Staff"));
if (tr
- && tr->is_alias (ly_symbol2scm ("Staff")) && tr != last_staff_
+ && tr != last_staff_
&& to_boolean (get_property ("followVoice")))
{
if (last_head_)
#include "translator.icc"
-ADD_ACKNOWLEDGER (Note_head_line_engraver, rhythmic_head);
+void
+Note_head_line_engraver::boot ()
+{
+ ADD_ACKNOWLEDGER (Note_head_line_engraver, rhythmic_head);
+}
+
ADD_TRANSLATOR (Note_head_line_engraver,
/* doc */
"Engrave a line between two note heads in a staff"