-Engraver_group_engraver::check_removal()
-{
- for (int i =0; i < group_l_arr_.size(); ) {
- group_l_arr_[i]->check_removal();
- if (group_l_arr_[i]->removable_b())
- terminate_engraver(group_l_arr_[i]);
- else
- i++;
+Engraver_group::override (SCM sev)
+{
+ Stream_event *ev = unsmob<Stream_event> (sev);
+ SCM sym = ev->get_property ("symbol");
+ Grob_property_info gpi (context (), sym);
+
+ if (to_boolean (ev->get_property ("once")))
+ {
+ SCM token = gpi.temporary_override (ev->get_property ("property-path"),
+ ev->get_property ("value"));
+ if (scm_is_pair (token))
+ if (Global_context *g = context ()->get_global_context ())
+ {
+ g->add_finalization (scm_list_4 (ly_context_matched_pop_property_proc,
+ context ()->self_scm (),
+ sym,
+ token));
+ }