void
Paper_column_engraver::finalize ()
{
- if ((breaks_ % 8))
+ if (! (breaks_ % 8))
progress_indication ("[" + to_string (breaks_) + "]");
if (command_column_)
{
- command_column_->set_property ("line-break-permission", ly_symbol2scm ("allow"));
- command_column_->set_property ("page-turn-permission", ly_symbol2scm ("allow"));
+ if (!scm_is_symbol (command_column_->get_property ("line-break-permission")))
+ command_column_->set_property ("line-break-permission", ly_symbol2scm ("allow"));
system_->set_bound (RIGHT, command_column_);
}
}
break_events_.push_back (ev);
}
+IMPLEMENT_TRANSLATOR_LISTENER (Paper_column_engraver, label);
+void
+Paper_column_engraver::listen_label (Stream_event *ev)
+{
+ label_events_.push_back (ev);
+}
+
void
Paper_column_engraver::process_music ()
{
command_column_->set_property (perm_str.c_str (), perm);
}
+ for (vsize i = 0 ; i < label_events_.size () ; i ++)
+ {
+ SCM label = label_events_[i]->get_property ("page-label");
+ SCM labels = command_column_->get_property ("labels");
+ command_column_->set_property ("labels", scm_cons (label, labels));
+ }
+
bool start_of_measure = (last_moment_.main_part_ != now_mom ().main_part_
&& !measure_position (context ()).main_part_);
}
items_.clear ();
- if (to_boolean (get_property ("forbidBreak")))
+ if (to_boolean (get_property ("forbidBreak"))
+ && breaks_) /* don't honour forbidBreak if it occurs on the first moment of a score */
{
command_column_->set_property ("page-break-permission", SCM_EOL);
command_column_->set_property ("line-break-permission", SCM_EOL);
for (vsize i = 0; i < break_events_.size (); i++)
{
- SCM perm = break_events_[i]->get_property ("permission");
+ SCM perm = break_events_[i]->get_property ("break-permission");
if (perm == ly_symbol2scm ("force") || perm == ly_symbol2scm ("allow"))
warning (_f ("forced break was overridden by some other event, should you be using bar checks?"));
}
first_ = false;
break_events_.clear ();
-
+ label_events_.clear ();
SCM mpos = get_property ("measurePosition");
SCM barnum = get_property ("internalBarNumber");