- if (tuplets_[i].spanner_)
- continue;
-
- Spanner *spanner = make_spanner ("TupletBracket",
- tuplets_[i].music_->self_scm ());
- tuplets_[i].spanner_ = spanner;
-
- if (i > 0 && tuplets_[i-1].spanner_)
- Tuplet_bracket::add_tuplet_bracket (tuplets_[i].spanner_, tuplets_[i-1].spanner_);
- if (i < tuplets_.size()-1 && tuplets_[i+1].spanner_)
- Tuplet_bracket::add_tuplet_bracket (tuplets_[i+1].spanner_, tuplets_[i].spanner_);
-
- SCM proc = get_property ("tupletNumberFormatFunction");
- if (ly_is_procedure (proc))
- {
- SCM t = scm_apply_0 (proc, scm_list_1 (tuplets_[i].music_->self_scm ()));
- spanner->set_property ("text", t);
- }
+ Spanner *bracket = stopped_tuplets_[i].bracket_;
+ Spanner *number = stopped_tuplets_[i].number_;
+ if (bracket)
+ {
+ if (stopped_tuplets_[i].full_length_)
+ {
+ Item *col
+ = unsmob_item (stopped_tuplets_[i].full_length_note_
+ ? get_property ("currentMusicalColumn")
+ : get_property ("currentCommandColumn"));
+
+ bracket->set_bound (RIGHT, col);
+ number->set_bound (RIGHT, col);
+ }
+ else if (!bracket->get_bound (RIGHT))
+ {
+ if (bracket->get_bound (LEFT))
+ {
+ bracket->set_bound (RIGHT,
+ bracket->get_bound (LEFT));
+ number->set_bound (RIGHT,
+ stopped_tuplets_[i].bracket_->get_bound (LEFT));
+ }
+ else
+ programming_error ("stopped tuplet bracket has neither left nor right bound");
+ }
+ // todo: scrap last_tuplets_, use stopped_tuplets_ only.
+ // clear stopped_tuplets_ at start_translation_timestep
+ last_tuplets_.push_back (bracket);
+ last_tuplets_.push_back (number);
+ }
+ }
+ stopped_tuplets_.clear ();
+
+ concat (tuplets_, new_tuplets_);
+ new_tuplets_.clear ();
+ for (vsize j = tuplets_.size (); j > 0; j--)
+ {
+ /* i goes from size-1 downto 0, inclusively */
+ vsize i = j - 1;
+
+ if (tuplets_[i].bracket_)
+ continue;
+
+ tuplets_[i].full_length_ = to_boolean (get_property ("tupletFullLength"));
+ tuplets_[i].full_length_note_
+ = to_boolean (get_property ("tupletFullLengthNote"));
+
+ tuplets_[i].bracket_ = make_spanner ("TupletBracket",
+ tuplets_[i].event_->self_scm ());
+ tuplets_[i].number_ = make_spanner ("TupletNumber",
+ tuplets_[i].event_->self_scm ());
+ tuplets_[i].number_->set_object ("bracket", tuplets_[i].bracket_->self_scm ());
+ tuplets_[i].number_->set_parent (tuplets_[i].bracket_, X_AXIS);
+ tuplets_[i].number_->set_parent (tuplets_[i].bracket_, Y_AXIS);
+ tuplets_[i].bracket_->set_object ("tuplet-number", tuplets_[i].number_->self_scm ());
+ tuplets_[i].stop_moment_.grace_part_ = 0;
+
+ if (i + 1 < tuplets_.size () && tuplets_[i + 1].bracket_)
+ Tuplet_bracket::add_tuplet_bracket (tuplets_[i].bracket_, tuplets_[i + 1].bracket_);
+
+ if (i > 0 && tuplets_[i - 1].bracket_)
+ Tuplet_bracket::add_tuplet_bracket (tuplets_[i - 1].bracket_, tuplets_[i].bracket_);
+