X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fkey-engraver.cc;h=a35134c165b86ae076b288f541078120d3983de3;hb=98917430c66cf99c9ac706003056396b890319ff;hp=80727b141e553d1414ab46a58cd574a8a42904fb;hpb=91821bd59959b1289f2d711509017a4dacebecd2;p=lilypond.git diff --git a/lily/key-engraver.cc b/lily/key-engraver.cc index 80727b141e..a35134c165 100644 --- a/lily/key-engraver.cc +++ b/lily/key-engraver.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--2005 Han-Wen Nienhuys + (c) 1997--2005 Han-Wen Nienhuys */ #include "item.hh" @@ -76,10 +76,6 @@ Key_engraver::create_key (bool is_default) || key == SCM_EOL) && !scm_is_eq (last, key)) { - cancellation_ = make_item ("KeyCancellation", - key_event_ - ? key_event_->self_scm () : SCM_EOL); - SCM restore = SCM_EOL; SCM *tail = &restore; for (SCM s = last; scm_is_pair (s); s = scm_cdr (s)) @@ -88,13 +84,20 @@ Key_engraver::create_key (bool is_default) { *tail = scm_acons (scm_caar (s), scm_from_int (0), *tail); - tail = SCM_CDRLOC(*tail); + tail = SCM_CDRLOC (*tail); } } + + if (scm_is_pair (restore)) + { + cancellation_ = make_item ("KeyCancellation", + key_event_ + ? key_event_->self_scm () : SCM_EOL); - cancellation_->set_property ("alteration-alist", restore); - cancellation_->set_property ("c0-position", - get_property ("middleCPosition")); + cancellation_->set_property ("alteration-alist", restore); + cancellation_->set_property ("c0-position", + get_property ("middleCPosition")); + } } item_->set_property ("alteration-alist", key); } @@ -128,9 +131,7 @@ Key_engraver::acknowledge_clef (Grob_info info) (void)info; SCM c = get_property ("createKeyOnClefChange"); if (to_boolean (c)) - { - create_key (false); - } + create_key (false); } void @@ -138,9 +139,7 @@ Key_engraver::acknowledge_bar_line (Grob_info info) { (void)info; if (scm_is_pair (get_property ("keySignature"))) - { - create_key (true); - } + create_key (true); } void @@ -198,9 +197,8 @@ Key_engraver::initialize () context ()->set_property ("tonic", p.smobbed_copy ()); } - -ADD_ACKNOWLEDGER (Key_engraver,clef); -ADD_ACKNOWLEDGER (Key_engraver,bar_line); +ADD_ACKNOWLEDGER (Key_engraver, clef); +ADD_ACKNOWLEDGER (Key_engraver, bar_line); ADD_TRANSLATOR (Key_engraver, /* doc */ "",