- int script_count = scripts_.size ();
- for (int i = 0; i < script_count; i++)
- if (scripts_[i].follow_into_staff_)
- {
- Grob *sc = scripts_[i].script_;
- sc->add_offset_callback (Side_position_interface
- ::quantised_position_proc, Y_AXIS);
- sc->set_property ("staff-padding", SCM_EOL);
- }
+ if (info.event_cause ())
+ {
+ for (vsize i = 0; i < scripts_.size (); i++)
+ {
+ Grob *e = scripts_[i].script_;
+
+ if (Side_position_interface::get_axis (e) == X_AXIS
+ && !e->get_parent (Y_AXIS))
+ {
+ e->set_parent (info.grob (), Y_AXIS);
+ }
+ Side_position_interface::add_support (e, info.grob ());
+ }
+ }
+}
+
+void
+Script_engraver::acknowledge_note_column (Grob_info info)
+{
+ /* Make note column the parent of the script. That is not
+ correct, but due to seconds in a chord, noteheads may be
+ swapped around horizontally.
+
+ As the note head to put it on is not known now, postpone this
+ decision to Script_interface::calc_direction (). */
+ for (vsize i = 0; i < scripts_.size (); i++)
+ {
+ Grob *e = scripts_[i].script_;
+
+ if (!e->get_parent (X_AXIS)
+ && Side_position_interface::get_axis (e) == Y_AXIS)
+ e->set_parent (info.grob (), X_AXIS);
+ }
+}