]> git.donarmstrong.com Git - lilypond.git/commitdiff
Fix #192. release/2.10.7-1
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Mon, 1 Jan 2007 17:52:37 +0000 (18:52 +0100)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Mon, 1 Jan 2007 17:52:37 +0000 (18:52 +0100)
Store separation-item in tie, and use that iso. bound when broken.

Conflicts:

lily/tie-formatting-problem.cc
lily/tie.cc

input/regression/tie-broken-other-staff.ly [new file with mode: 0644]
lily/tie-engraver.cc
lily/tie-formatting-problem.cc
lily/tie.cc
scm/define-grob-properties.scm

diff --git a/input/regression/tie-broken-other-staff.ly b/input/regression/tie-broken-other-staff.ly
new file mode 100644 (file)
index 0000000..0bfca6a
--- /dev/null
@@ -0,0 +1,15 @@
+\header {
+  texidoc = "Broken tie lengths are not affected by clefs
+in other staves."
+}
+
+\version "2.10.0"
+
+\layout {
+  ragged-right = ##t
+}
+
+<<
+  \new Staff \relative c'''{ e1 ~ \break e }
+  \new Staff \relative c{ \clef bass a \clef treble cis }
+>>
index af3c5a4ad647f89fafee53b0e2bada63d786c061..243b14b43f86dad60776736f2006d89fb308e69e 100644 (file)
@@ -181,9 +181,14 @@ Tie_engraver::stop_translation_timestep ()
       if (!wait)
        heads_to_tie_.clear ();
 
+      Grob *sep = unsmob_grob (get_property ("breakableSeparationItem"));
       for (vsize i = 0; i < ties_.size (); i++)
-       typeset_tie (ties_[i]);
-
+       {
+         if (sep)
+           ties_[i]->set_object  ("separation-item", sep->self_scm ());
+         
+         typeset_tie (ties_[i]);
+       }
       ties_.clear ();
       tie_column_ = 0;
     }
index 4dada25d220116b68dfc8f6a70b8a7e962a53a1e..fa72e3f18a4aa7f2cbf7c643236eaa33e04f329f 100644 (file)
@@ -202,7 +202,7 @@ Tie_formatting_problem::set_column_chord_outline (vector<Item*> bounds,
                                    Y_AXIS, -dir);
     }
   while (flip (&updowndir) != DOWN);
-  
+
   head_extents_[key].set_empty ();
   for (vsize i = 0; i < head_boxes.size (); i++)
     {
@@ -276,7 +276,14 @@ Tie_formatting_problem::from_ties (vector<Grob*> const &ties)
       for (vsize i = 0; i < ties.size (); i++)
        {
          Item *it = dynamic_cast<Spanner*> (ties[i])->get_bound (d);
-                                            
+         if (it->break_status_dir ())
+           {
+             Item *sep
+               = dynamic_cast<Item*> (unsmob_grob (ties[i]->get_object ("separation-item")));
+             if (sep && sep->get_column () == it->get_column ())
+               it = sep;
+           }
+         
          bounds.push_back (it);
        }
       
index 1263237688630d9d862a5978acff1a85856c60b7..bbda8722f1822f45b811f1d34ada282acfa97f8b 100644 (file)
@@ -302,12 +302,16 @@ ADD_INTERFACE (Tie,
               "dash-period "
               "details "
               "direction "
+              "separation-item "
+              "head-direction "
               "line-thickness " 
               "quant-score "
               "staff-position "
               "thickness "
+
               );
 
 
 
 
+
index dddcef9aeec4dd276a1cf0eca9eab0e134fbebde..779f6e45ff4d8f10e9743787c319e242d3c4da95 100644 (file)
@@ -484,6 +484,7 @@ useful clues.
 ")
      (note-heads ,ly:grob-array? "List of note head grobs")
      (note-head ,ly:grob? "A single note head")
+     (separation-item ,ly:grob? "A separation item.")
      (side-support-elements ,ly:grob-array? "the support, a list of grobs.")
      (spacing-wishes ,ly:grob-array? "List of note spacing or staff spacing objects.")
      (stems ,ly:grob-array? "list of stem objects, corresponding to the notes that the arpeggio has to be before.")