- lastrest_p_ = mmrest_p_;
- int cur = gh_scm2int (get_property ("currentBarNumber"));
- lastrest_p_->set_grob_property ("measure-count",
- gh_int2scm (cur - start_measure_i_));
- mmrest_p_ = 0;
+ last_rest_ = mmrest_;
+ last_numbers_ = numbers_;
+
+ int cur = scm_to_int (get_property ("internalBarNumber"));
+ int num = cur - start_measure_;
+
+ /*
+ We can't plug a markup directly into the grob, since the
+ measure-count determines the formatting of the mmrest.
+ */
+ last_rest_->set_property ("measure-count", scm_from_int (num));
+
+ mmrest_ = 0;
+ numbers_.clear ();
+
+ Grob *last = last_numbers_.size () ? last_numbers_[0] : 0;
+ if (last && last->get_property ("text") == SCM_EOL)
+ {
+ SCM thres = get_property ("restNumberThreshold");
+ int t = 1;
+ if (scm_is_number (thres))
+ t = scm_to_int (thres);
+
+ if (num <= t)
+ last->suicide ();
+ else
+ {
+ SCM text
+ = scm_number_to_string (scm_from_int (num), scm_from_int (10));
+ last->set_property ("text", text);
+ }
+ }