/*
This file is part of LilyPond, the GNU music typesetter.
- Copyright (C) 1997--2010 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
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;
}
}
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 ());
}
}