- Link_array<Translator_group> groups = group_l_arr ();
- for (int i=0; i < groups.size(); i++)
- {
- Engraver_group_engraver * group = dynamic_cast<Engraver_group_engraver*> (groups[i]);
- if (group)
- {
- group->do_announces();
- }
- }
-
- Request dummy_req;
+ context ()->event_source ()->remove_listener (GET_LISTENER (override), ly_symbol2scm ("Override"));
+ context ()->event_source ()->remove_listener (GET_LISTENER (revert), ly_symbol2scm ("Revert"));
+ Translator_group::disconnect_from_context ();
+}
+
+void
+Engraver_group::announce_grob (Grob_info info)
+{
+ announce_infos_.push_back (info);
+
+ Engraver_group *dad_eng
+ = context_->get_parent_context ()
+ ? dynamic_cast<Engraver_group *> (context_->get_parent_context ()->implementation ())
+ : 0;
+
+ if (dad_eng)
+ dad_eng->announce_grob (info);
+}
+
+void
+Engraver_group::acknowledge_grobs ()
+{
+ if (!announce_infos_.size ())
+ return;
+
+ SCM name_sym = ly_symbol2scm ("name");
+ SCM meta_sym = ly_symbol2scm ("meta");