- tie_start_definition_ = updated_grob_properties (context (), ly_symbol2scm ("Tie"));
- heads_to_tie_ = now_heads_;
- last_event_ = event_;
+ SCM start_definition
+ = updated_grob_properties (context (), ly_symbol2scm ("Tie"));
+
+ if (!to_boolean (get_property ("tieWaitForNote")))
+ heads_to_tie_.clear ();
+
+ for (vsize i = 0; i < now_heads_.size (); i++)
+ {
+ Grob *head = now_heads_[i];
+ Stream_event *left_ev = unsmob_stream_event (head->get_property ("cause"));
+ if (left_ev)
+ {
+ Head_event_tuple event_tup;
+
+ event_tup.head_ = head;
+ event_tup.tie_definition_ = start_definition;
+ event_tup.event_ = event_;
+
+ Moment end = now_mom ();
+ if (end.grace_part_)
+ {
+ end.grace_part_ += get_event_length (left_ev).main_part_;
+ }
+ else
+ {
+ end += get_event_length (left_ev);
+ }
+ event_tup.end_moment_ = end;
+
+ heads_to_tie_.push_back (event_tup);
+ }
+ }