+ Grob *g = info.grob ();
+
+ if (text_)
+ for (SCM s = text_->get_property ("non-break-align-symbols");
+ scm_is_pair (s);
+ s = scm_cdr (s))
+ if (g->internal_has_interface (scm_car (s)))
+ text_->set_parent (g, X_AXIS);
+}
+
+void
+Metronome_mark_engraver::stop_translation_timestep ()
+{
+ if (text_)
+ {
+ if (text_->get_parent (X_AXIS)
+ && text_->get_parent (X_AXIS)->internal_has_interface (ly_symbol2scm ("multi-measure-rest-interface"))
+ && bar_)
+ text_->set_parent (bar_, X_AXIS);
+ else if (!support_)
+ {
+ /*
+ Gardner Read "Music Notation", p.278
+
+ Align the metronome mark over the time signature (or the
+ first notational element of the measure if no time
+ signature is present in that measure).
+ */
+ if (Grob *mc = unsmob_grob (get_property ("currentMusicalColumn")))
+ text_->set_parent (mc, X_AXIS);
+ else if (Grob *cc = unsmob_grob (get_property ("currentCommandColumn")))
+ text_->set_parent (cc, X_AXIS);
+ }
+ text_->set_object ("side-support-elements",
+ grob_list_to_grob_array (get_property ("stavesFound")));
+ text_ = 0;
+ support_ = 0;
+ bar_ = 0;
+ tempo_ev_ = 0;
+ }