Link_array<Music> text_events_;
int start_measure_;
Moment start_moment_;
-
+ Rational last_main_moment_;
Spanner *mmrest_;
Link_array<Spanner> numbers_;
SCM t = e->get_mus_property ("text");
SCM dir = e->get_mus_property ("direction");
sp->set_grob_property ("text",t);
- if (ly_dir_p (dir))
+ if (is_direction (dir))
sp->set_grob_property ("direction",dir);
numbers_.push (sp);
for (int i = 0; i < numbers_.size(); i++)
add_bound_item (numbers_[i], it);
}
+
if (last_rest_)
{
add_bound_item (last_rest_,it);
{
typeset_grob (last_rest_);
- /*
- huh ? add-staff-support ?
- */
for (int i = 0; i < last_numbers_.size ();i++)
- typeset_grob (last_numbers_[i]);
+ {
+ typeset_grob (last_numbers_[i]);
+ Side_position_interface::add_staff_support (last_numbers_[i]);
+ }
}
last_rest_ = 0;
last_numbers_.clear();
{
SCM smp = get_property ("measurePosition");
Moment mp = (unsmob_moment (smp)) ? *unsmob_moment (smp) : Moment (0);
-
- if (mmrest_ && !mp.to_bool ())
+
+ Moment now =now_mom ();
+ if (mmrest_
+ && now.main_part_ != last_main_moment_
+ && mp.main_part_ == Rational (0))
{
last_rest_ = mmrest_;
last_numbers_ = numbers_;
-
+
int cur = gh_scm2int (get_property ("currentBarNumber"));
int num = cur - start_measure_;
last_rest_->set_grob_property ("measure-count", gh_int2scm (num));
}
mmrest_ = 0;
-
+ numbers_.clear ();
+
Grob * last = last_numbers_.size() ? last_numbers_[0] : 0;
if (last && last->get_grob_property ("text") == SCM_EOL)
{
}
}
}
+
+ last_main_moment_ = now.main_part_;
}
void