X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fkey-engraver.cc;h=2264e27876a4e5473cda92b2328ac0ebaedccb55;hb=a811a3c91c05f33474c1d447bedaa1e089522532;hp=2365a37756c793511f3f9ebd0e08b7247ec0a19a;hpb=e18531db1f79fb685fbd16d6a2a67bf4b6c09915;p=lilypond.git diff --git a/lily/key-engraver.cc b/lily/key-engraver.cc index 2365a37756..2264e27876 100644 --- a/lily/key-engraver.cc +++ b/lily/key-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2010 Han-Wen Nienhuys + Copyright (C) 1997--2011 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 @@ -72,12 +72,15 @@ Key_engraver::create_key (bool is_default) item_ = make_item ("KeySignature", key_event_ ? key_event_->self_scm () : SCM_EOL); + /* Use middleCClefPosition rather than middleCPosition, because cue + * notes with a different clef will modify middleCPosition. The + * Key signature, however, should still be printed at the original + * position. */ item_->set_property ("c0-position", - get_property ("middleCPosition")); + get_property ("middleCClefPosition")); SCM last = get_property ("lastKeySignature"); SCM key = get_property ("keySignature"); - bool extranatural = to_boolean (get_property ("extraNatural")); if ((to_boolean (get_property ("printKeyCancellation")) || key == SCM_EOL) @@ -90,9 +93,8 @@ Key_engraver::create_key (bool is_default) SCM new_alter_pair = scm_assoc (scm_caar (s), key); Rational old_alter = robust_scm2rational (scm_cdar (s), 0); if (new_alter_pair == SCM_BOOL_F - || (extranatural - && (ly_scm2rational (scm_cdr (new_alter_pair)) - old_alter)*old_alter - < Rational (0))) + || ((ly_scm2rational (scm_cdr (new_alter_pair)) - old_alter) * old_alter + < Rational (0))) { *tail = scm_cons (scm_car (s), *tail); tail = SCM_CDRLOC (*tail); @@ -196,7 +198,7 @@ Key_engraver::read_event (Stream_event const *r) } if (warn) - r->origin ()->warning ("No ordering for key signature alterations"); + r->origin ()->warning ("Incomplete keyAlterationOrder for key signature"); } context ()->set_property ("keySignature", scm_reverse (accs)); @@ -232,7 +234,8 @@ ADD_TRANSLATOR (Key_engraver, "keyAlterationOrder " "keySignature " "lastKeySignature " - "printKeyCancellation ", + "printKeyCancellation " + "middleCClefPosition ", /* write */ "keySignature "