-ENTER_DESCRIPTION(Vertical_align_engraver,
-/* descr */ "Catch Vertical axis groups and stack them.",
-/* creats*/ "VerticalAlignment",
-/* acks */ "axis-group-interface",
-/* reads */ "",
-/* write */ "");
+ Grob *added = arr.back ();
+ arr.pop_back ();
+ for (vsize i = 0; i < arr.size (); i++)
+ {
+ if (arr[i] == before_grob)
+ {
+ arr.insert (arr.begin () + i, added);
+ 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));
+ 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 ());
+ }
+}