- Time_description const *time = get_staff_info().time_C_;
- mmrest_p_ = new Multi_measure_rest;
- rest_item_creation_mom_ = time->when_mom ();
- announce_element (Score_element_info (mmrest_p_, multi_measure_req_l_));
- start_measure_i_ = time->bars_i_;
+ mmrest_ = make_spanner ("MultiMeasureRest", rest_ev_->self_scm ());
+
+ Spanner *sp
+ = make_spanner ("MultiMeasureRestNumber", rest_ev_->self_scm ());
+ numbers_.push_back (sp);
+
+ if (text_events_.size ())
+ {
+ for (vsize i = 0; i < text_events_.size (); i++)
+ {
+ Stream_event *e = text_events_[i];
+ Spanner *sp
+ = make_spanner ("MultiMeasureRestText", e->self_scm ());
+ SCM t = e->get_property ("text");
+ SCM dir = e->get_property ("direction");
+ sp->set_property ("text", t);
+ if (is_direction (dir))
+ sp->set_property ("direction", dir);
+
+ numbers_.push_back (sp);
+ }
+
+ /*
+ Stack different scripts.
+ */
+ Direction d = DOWN;
+ do
+ {
+ Grob *last = 0;
+ for (vsize i = 0; i < numbers_.size (); i++)
+ {
+ if (scm_from_int (d) == numbers_[i]->get_property ("direction"))
+ {
+ if (last)
+ Side_position_interface::add_support (numbers_[i], last);
+ last = numbers_[i];
+ }
+ }
+ }
+ while (flip (&d) != DOWN);
+ }
+
+ for (vsize i = 0; i < numbers_.size (); i++)
+ {
+ Side_position_interface::add_support (numbers_[i], mmrest_);
+ numbers_[i]->set_parent (mmrest_, Y_AXIS);
+ }
+
+ start_measure_
+ = scm_to_int (get_property ("internalBarNumber"));