+ Grob *i1 = unsmob_grob (a);
+ Grob *i2 = unsmob_grob (b);
+
+ SCM p1 = i1->get_property ("script-priority");
+ SCM p2 = i2->get_property ("script-priority");
+
+ return scm_to_int (p1) < scm_to_int (p2) ? SCM_BOOL_T : SCM_BOOL_F;
+}
+
+MAKE_SCHEME_CALLBACK (Script_column, row_before_line_breaking, 1);
+SCM
+Script_column::row_before_line_breaking (SCM smob)
+{
+ Grob *me = unsmob_grob (smob);
+ vector<Grob*> horizontal_grobs;
+ extract_grob_set (me, "scripts", scripts);
+
+ Grob_scripts_map head_scripts_map;
+ vector<Grob *> affect_all_grobs;
+ for (vsize i = 0; i < scripts.size (); i++)
+ {
+ Grob *sc = scripts[i];
+
+ /*
+ Don't want to consider scripts horizontally next to notes.
+ */
+ if (Accidental_placement::has_interface (sc)
+ || Arpeggio::has_interface (sc))
+ {
+ affect_all_grobs.push_back (sc);
+ }
+ else if (sc->get_property_data ("Y-offset") !=
+ Side_position_interface::x_aligned_side_proc)
+ {
+ head_scripts_map[sc->get_parent (Y_AXIS)].push_back (sc);
+ }
+ }