]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/vertical-align-engraver.cc
Don't set staff-affinity for staves with alignAboveContext.
[lilypond.git] / lily / vertical-align-engraver.cc
index 27423a030d76448481c79665f3ab3d1db9fae354..570340f8d94dbc8254328b0e8cc6e84caad6cce1 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2009 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2011 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -151,13 +151,18 @@ Vertical_align_engraver::acknowledge_axis_group (Grob_info i)
              if (arr[i] == before_grob)
                {
                  arr.insert (arr.begin () + i, added);
-                 added->set_property ("staff-affinity", scm_from_int (DOWN));
+
+                 /* Only set staff affinity if it already has one.  That way we won't
+                    set staff-affinity on things that don't want it (like staves). */
+                 if (scm_is_number (added->get_property ("staff-affinity")))
+                   added->set_property ("staff-affinity", scm_from_int (DOWN));
                  break;
                }
              else if (arr[i] == after_grob)
                {
                  arr.insert (arr.begin () + i + 1, added);
-                 added->set_property ("staff-affinity", scm_from_int (UP));
+                 if (scm_is_number (added->get_property ("staff-affinity")))
+                   added->set_property ("staff-affinity", scm_from_int (UP));
                  break;
                }
            }
@@ -166,6 +171,7 @@ Vertical_align_engraver::acknowledge_axis_group (Grob_info i)
   else if (qualifies (i))
     {
       Pointer_group_interface::add_grob (valign_, ly_symbol2scm ("elements"), i.grob ());
-      i.grob ()->set_object ("staff-grouper", valign_->self_scm ());
+      if (!unsmob_grob (i.grob ()->get_object ("staff-grouper")))
+       i.grob ()->set_object ("staff-grouper", valign_->self_scm ());
     }
 }