+ if (new_req_ && stop_req_)
+ stop_req_ = 0;
+
+ if (new_req_)
+ start_moment_ = now_mom ();
+
+ if (stop_req_)
+ {
+ busy_span_req_ =0;
+ stop_req_ = 0;
+ }
+
+ if (new_req_)
+ {
+ busy_span_req_ = new_req_;
+ new_req_ =0;
+ }
+
+ if (busy_span_req_ && !mmrest_)
+ {
+ mmrest_ = new Spanner (get_property ("MultiMeasureRest"));
+
+ if (text_events_.size())
+ {
+ for (int i = 0; i < text_events_.size(); i++)
+ {
+ Spanner *sp
+ = new Spanner (get_property ("MultiMeasureRestText"));
+
+ Music* e = text_events_[i];
+ SCM t = e->get_mus_property ("text");
+ SCM dir = e->get_mus_property ("direction");
+ sp->set_grob_property ("text",t);
+ if (is_direction (dir))
+ sp->set_grob_property ("direction",dir);
+
+ numbers_.push (sp);
+ announce_grob (sp, e->self_scm());
+ }
+
+ /*
+ Stack different scripts.
+ */
+ Direction d = DOWN;
+ do {
+ Grob *last =0;
+ for (int i=0; i <numbers_.size(); i++)
+ {
+ if (gh_int2scm (d) == numbers_[i]->get_grob_property ("direction"))
+ {
+ if (last)
+ Side_position_interface::add_support (numbers_[i], last);
+ last = numbers_[i];
+ }
+ }
+ } while (flip (&d) != DOWN);
+ }
+ else
+ {
+ Spanner *sp
+ = new Spanner (get_property ("MultiMeasureRestNumber"));
+ numbers_.push (sp);
+ announce_grob (sp, busy_span_req_->self_scm());
+ }
+
+ for (int i =0 ; i < numbers_.size(); i++)
+ {
+ Side_position_interface::add_support (numbers_[i], mmrest_);
+ numbers_[i]->set_parent (mmrest_, Y_AXIS);
+ }
+
+ announce_grob (mmrest_, busy_span_req_->self_scm());
+ start_measure_
+ = gh_scm2int (get_property ("currentBarNumber"));
+ }
+
+ if (gh_string_p (get_property ("whichBar")))