- count_ ++;
- if (repeat_sign_type_ == MEASURE)
- {
- finished_percent_ = percent_;
- finished_percent_counter_ = percent_counter_;
-
- typeset_perc ();
- percent_ = make_spanner ("PercentRepeat", repeat_->self_scm ());
-
- Grob *col = unsmob_grob (get_property ("currentCommandColumn"));
- percent_->set_bound (LEFT, col);
-
- if (total_count_ > 2)
- {
- percent_counter_
- = make_spanner ("PercentRepeatCounter", repeat_->self_scm ());
-
-
- SCM text = scm_number_to_string (scm_from_int (count_),
- scm_from_int (10));
- percent_counter_->set_property ("text", text);
- percent_counter_->set_bound (LEFT, col);
- Side_position_interface::add_support (percent_counter_,
- percent_);
- percent_counter_->set_parent (percent_, Y_AXIS);
- }
- }
- else if (repeat_sign_type_ == DOUBLE_MEASURE)
- {
- double_percent_ = make_item ("DoublePercentRepeat", repeat_->self_scm ());
-
- if (total_count_ > 2)
- {
- double_percent_counter_
- = make_item ("DoublePercentRepeatCounter",
- repeat_->self_scm());
-
- SCM text = scm_number_to_string (scm_from_int (count_),
- scm_from_int (10));
- double_percent_counter_->set_property ("text", text);
-
- Side_position_interface::add_support (double_percent_counter_,
- double_percent_);
- double_percent_counter_->set_parent (double_percent_, Y_AXIS);
- double_percent_counter_->set_parent (double_percent_, X_AXIS);
- }
-
- /*
- forbid breaks on a % line. Should forbid all breaks, really.
-
- Ugh. Why can't this be regular communication between
- contexts?
- */
- get_score_engraver ()->forbid_breaks ();
- }
- next_moment_ = next_moment_ + body_length_;
+ if (percent_)
+ typeset_perc ();
+
+ percent_ = make_spanner ("PercentRepeat", percent_event_->self_scm ());
+
+ Grob *col = first_command_column_;
+ percent_->set_bound (LEFT, col);
+
+ SCM count = percent_event_->get_property ("repeat-count");
+ if (!scm_is_null (count) && to_boolean (get_property ("countPercentRepeats"))
+ && check_repeat_count_visibility (context (), count))
+ {
+ percent_counter_ = make_spanner ("PercentRepeatCounter",
+ percent_event_->self_scm ());
+
+ SCM text = scm_number_to_string (count, scm_from_int (10));
+ percent_counter_->set_property ("text", text);
+ percent_counter_->set_bound (LEFT, col);
+ Side_position_interface::add_support (percent_counter_, percent_);
+ percent_counter_->set_parent (percent_, Y_AXIS);
+ percent_counter_->set_parent (percent_, X_AXIS);
+ }
+ else
+ percent_counter_ = 0;