X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Foutput-property-engraver.cc;h=7a0fa2d3c3389484cb94f03c6f798f0a1e6b866c;hb=3af0951f9a11677240efa6228683dd4fcea13eaf;hp=78901a21579230acf3330a469743cb288225eaa0;hpb=652ed35a2013489d0a14fede6307cd2595abb2c4;p=lilypond.git diff --git a/lily/output-property-engraver.cc b/lily/output-property-engraver.cc index 78901a2157..7a0fa2d3c3 100644 --- a/lily/output-property-engraver.cc +++ b/lily/output-property-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2012 Han-Wen Nienhuys + Copyright (C) 2000--2015 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -31,13 +31,12 @@ class Output_property_engraver : public Engraver protected: vector props_; - DECLARE_ACKNOWLEDGER (grob); - DECLARE_TRANSLATOR_LISTENER (apply_output); + void acknowledge_grob (Grob_info); + void listen_apply_output (Stream_event *); void stop_translation_timestep (); }; -IMPLEMENT_TRANSLATOR_LISTENER (Output_property_engraver, apply_output); void Output_property_engraver::listen_apply_output (Stream_event *ev) { @@ -56,6 +55,10 @@ Output_property_engraver::acknowledge_grob (Grob_info inf) { Stream_event *o = props_[i]; Context *d = inf.context (); + SCM grob = o->get_property ("symbol"); + if (scm_is_symbol (grob) + && ly_symbol2string (grob) != inf.grob ()->name ()) + continue; SCM proc = o->get_property ("procedure"); scm_call_3 (proc, inf.grob ()->self_scm (), @@ -74,7 +77,13 @@ Output_property_engraver::Output_property_engraver () { } -ADD_ACKNOWLEDGER (Output_property_engraver, grob); +void +Output_property_engraver::boot () +{ + ADD_LISTENER (Output_property_engraver, apply_output); + ADD_ACKNOWLEDGER (Output_property_engraver, grob); +} + ADD_TRANSLATOR (Output_property_engraver, /* doc */ "Apply a procedure to any grob acknowledged.",