]> git.donarmstrong.com Git - lilypond.git/commitdiff
Fix conflicts between outside-staff-priority and script-priority.
authorJoe Neeman <joeneeman@gmail.com>
Sun, 17 Dec 2006 07:29:36 +0000 (09:29 +0200)
committerJoe Neeman <joeneeman@gmail.com>
Sun, 17 Dec 2006 07:29:36 +0000 (09:29 +0200)
lily/axis-group-interface.cc
lily/dynamic-engraver.cc
lily/script-column.cc
scm/define-grobs.scm

index a1a1353c1f9c731a759d66abe6250dd2da893b93..4319bb8b92cd0594311142bed40928dddeec28ae 100644 (file)
@@ -299,8 +299,8 @@ Axis_group_interface::get_children (Grob *me, vector<Grob*> *found)
 bool
 staff_priority_less (Grob * const &g1, Grob * const &g2)
 {
-  int priority_1 = robust_scm2int (g1->get_property ("outside-staff-priority"), INT_MIN);
-  int priority_2 = robust_scm2int (g2->get_property ("outside-staff-priority"), INT_MIN);
+  Real priority_1 = robust_scm2double (g1->get_property ("outside-staff-priority"), -infinity_f);
+  Real priority_2 = robust_scm2double (g2->get_property ("outside-staff-priority"), -infinity_f);
 
   if (priority_1 < priority_2)
     return true;
index 5c3d0feecdf2627da0f4ffca841dc5ef864298a9..8f64db11363add6c9653bacb8efed2f7cc0a9254 100644 (file)
@@ -64,7 +64,6 @@ class Dynamic_engraver : public Engraver
 
   TRANSLATOR_DECLARATIONS (Dynamic_engraver);
   DECLARE_ACKNOWLEDGER (accidental);
-  DECLARE_ACKNOWLEDGER (script);
   DECLARE_ACKNOWLEDGER (stem_tremolo);
   DECLARE_ACKNOWLEDGER (note_column);
   DECLARE_ACKNOWLEDGER (slur);
@@ -454,27 +453,7 @@ Dynamic_engraver::acknowledge_note_column (Grob_info info)
     finished_cresc_->set_bound (RIGHT, info.grob ());
 }
 
-void
-Dynamic_engraver::acknowledge_script (Grob_info info)
-{
-  if (!line_spanner_ || !script_)
-    return;
-
-  SCM p = info.grob ()->get_property ("script-priority");
-
-  /*
-    UGH.
-
-    DynamicText doesn't really have a script-priority field.
-  */
-  if (scm_is_number (p)
-      && scm_to_int (p)
-      < scm_to_int (script_->get_property ("script-priority")))
-    Side_position_interface::add_support (line_spanner_, info.grob ());
-}
-
 ADD_ACKNOWLEDGER (Dynamic_engraver, accidental);
-ADD_ACKNOWLEDGER (Dynamic_engraver, script);
 ADD_ACKNOWLEDGER (Dynamic_engraver, note_column);
 ADD_ACKNOWLEDGER (Dynamic_engraver, slur);
 ADD_ACKNOWLEDGER (Dynamic_engraver, stem_tremolo);
index 726b32727623e1bd4193b66d713dcf39c47f906b..a8fc0c3fc4c9c2067b6f68a86ede5e8c8c8be512 100644 (file)
@@ -133,7 +133,19 @@ Script_column::order_grobs (vector<Grob*> grobs)
        {
          Grob *g = unsmob_grob (scm_car (s));
          if (last)
-           Side_position_interface::add_support (g, last);
+           {
+             SCM outside_staff = last->get_property ("outside-staff-priority");
+             if (scm_is_number (outside_staff))
+               {
+                 /* we allow the outside-staff-priority ordering to override the
+                    script-priority ordering */
+                 if (!scm_is_number (g->get_property ("outside-staff-priority")))
+                   g->set_property ("outside-staff-priority",
+                                    scm_from_double (scm_to_double (outside_staff) + 0.1));
+               }
+             else
+               Side_position_interface::add_support (g, last);
+           }
 
          last = g;
        }
index ca3bcd130dc16886c3215c5c166e9c09c5e89af8..becbc1c597198934cb0a8810b0d7204c7430543e 100644 (file)
        (font-shape . italic)
        (avoid-slur . around)
        (no-spacing-rods . #t)
-       (script-priority . 100)
        (outside-staff-priority . 250)
        (meta . ((class . Item)
                 (interfaces . (font-interface