X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fgrace-engraver.cc;h=5279cab4c0fb2ed3fa7f2dd03bc4846a84d998a0;hb=2ffbc90e9f4dece349b414f34aeffc84043ed539;hp=a0962da8889e3fbe0039df940c622aea2662de5a;hpb=0fe24db3936774a8fb913cb14c997036db7aeb1c;p=lilypond.git diff --git a/lily/grace-engraver.cc b/lily/grace-engraver.cc index a0962da888..5279cab4c0 100644 --- a/lily/grace-engraver.cc +++ b/lily/grace-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2014 Han-Wen Nienhuys + Copyright (C) 2004--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 @@ -38,7 +38,7 @@ protected: virtual void finalize (); TRANSLATOR_DECLARATIONS (Grace_engraver); - DECLARE_LISTENER (grace_change); + void grace_change (SCM); }; Grace_engraver::Grace_engraver () @@ -48,7 +48,6 @@ Grace_engraver::Grace_engraver () } // The iterator should usually come before process_music -IMPLEMENT_LISTENER (Grace_engraver, grace_change); void Grace_engraver::grace_change (SCM) { @@ -101,7 +100,7 @@ Grace_engraver::consider_change_grace_settings () SCM grob = scm_cadr (elt); SCM cell = scm_cddr (elt); - Grob_property_info (Context::unsmob (context), grob).matched_pop (cell); + Grob_property_info (unsmob (context), grob).matched_pop (cell); } grace_settings_ = SCM_EOL; } @@ -121,10 +120,7 @@ Grace_engraver::consider_change_grace_settings () if (!scm_is_pair (sym)) sym = scm_list_1 (sym); - Context *c = context (); - while (c && !c->is_alias (context_name)) - c = c->get_parent_context (); - + Context *c = find_context_above (context (), context_name); if (c) { SCM cell = Grob_property_info (c, grob).push (sym, val); @@ -139,7 +135,7 @@ Grace_engraver::consider_change_grace_settings () if (last_moment_ == Rational (-1)) { Dispatcher *d = context ()->event_source (); - d->add_listener (GET_LISTENER (grace_change), ly_symbol2scm ("GraceChange")); + d->add_listener (GET_LISTENER (Grace_engraver, grace_change), ly_symbol2scm ("GraceChange")); } last_moment_ = now; } @@ -150,7 +146,7 @@ Grace_engraver::finalize () if (last_moment_ != Rational (-1)) { Dispatcher *d = context ()->event_source (); - d->remove_listener (GET_LISTENER (grace_change), ly_symbol2scm ("GraceChange")); + d->remove_listener (GET_LISTENER (Grace_engraver, grace_change), ly_symbol2scm ("GraceChange")); } }