- if (!xaxis && follow_staff)
- p->add_offset_callback (Side_position_interface::quantised_position_proc, Y_AXIS);
-
-
- p->set_grob_property ("script-priority", priority);
-
- script_p_arr_.push (p);
-
- announce_grob (p, l);
+ art = gh_cdr (art);
+
+ Grob *p =new Item (tg->get_property ("Script"));
+ *descr = art;
+
+ SCM force_dir = event->get_mus_property ("direction");
+ if (is_direction (force_dir) && to_dir (force_dir))
+ p->set_grob_property ("direction", force_dir);
+
+ copy_property (p, ly_symbol2scm ("script-molecule"), art);
+ copy_property (p, ly_symbol2scm ("direction"), art);
+ copy_property (p, ly_symbol2scm ("side-relative-direction"), art);
+
+ int prio =0;
+ SCM sprio = scm_assoc (ly_symbol2scm ("script-priority"), art);
+ if (gh_pair_p (sprio))
+ prio = gh_scm2int (gh_cdr (sprio));
+
+
+ /*
+ Make sure they're in order of user input by adding index i.
+ Don't use the direction in this priority. Smaller means closer
+ to the head.
+ */
+ prio += index;
+
+ Side_position_interface::set_axis (p, Y_AXIS);
+ p->set_grob_property ("script-priority", gh_int2scm (prio));
+ return p;
+}
+
+void
+Script_engraver::process_music ()
+{
+ for (int i=0; i < scripts_.size (); i++)
+ {
+ Music* l=scripts_[i].event_;
+
+ Grob * p = make_script_from_event (&scripts_[i].description_, daddy_trans_, l, i);
+
+ scripts_[i].script_ = p;
+ if (p)
+ announce_grob (p, l->self_scm());