- Grob *me = unsmob_grob (element_smob);
- Axis a = (Axis) gh_scm2int (axis);
- assert (a == X_AXIS);
-
- Item* item = dynamic_cast<Item*> (me);
- Direction bsd = item->break_status_dir ();
- if (bsd == LEFT)
+ Item *me = dynamic_cast<Item *> (grob);
+ extract_grob_set (me, "elements", elts);
+
+ SCM order_vec = me->get_property ("break-align-orders");
+ if (!scm_is_vector (order_vec)
+ || scm_c_vector_length (order_vec) < 3)
+ return elts;
+
+ Link_array<Grob> writable_elts (elts);
+ SCM order = scm_vector_ref (order_vec,
+ scm_from_int (me->break_status_dir () + 1));
+
+ /*
+ Copy in order specified in BREAK-ALIGN-ORDER.
+ */
+ Link_array<Grob> new_elts;
+ for (; scm_is_pair (order); order = scm_cdr (order))