]> git.donarmstrong.com Git - lilypond.git/commitdiff
Fix spacing when there is an empty barline.
authorJoe Neeman <joeneeman@gmail.com>
Mon, 18 Aug 2008 04:38:25 +0000 (21:38 -0700)
committerJoe Neeman <joeneeman@gmail.com>
Mon, 18 Aug 2008 17:37:10 +0000 (10:37 -0700)
input/regression/spacing-to-empty-barline.ly [new file with mode: 0644]
lily/note-spacing.cc

diff --git a/input/regression/spacing-to-empty-barline.ly b/input/regression/spacing-to-empty-barline.ly
new file mode 100644 (file)
index 0000000..ac8bced
--- /dev/null
@@ -0,0 +1,42 @@
+\version "2.11.50"
+
+\header {
+  texidoc = "An empty barline does not confuse the spacing engine too much.
+The two scores should look approximately the same."
+}
+
+\layout {
+  \context {
+    \Score
+    \accepts "Top"
+  }
+
+  \context {
+    \name "Top"
+    \alias "Staff"
+    \type "Engraver_group"
+    \consists "Output_property_engraver"
+    \consists "Bar_engraver"
+    \consists "Skip_event_swallow_translator"
+    \consists "Axis_group_engraver"
+
+    \override VerticalAxisGroup #'Y-extent = ##f
+    \override VerticalAxisGroup #'minimum-Y-extent = ##f
+    \override BarLine #'transparent = ##t
+  }
+}
+
+\paper {
+  ragged-right = ##t
+}
+
+\score {
+  <<
+    \new Top { s1 }
+    \new Staff { c''2 c''4 c''4 }
+  >>
+}
+
+\score {
+  { c''2 c''4 c''4 }
+}
index 90db07a7e82ab1159a3804c4308b3f9bccc21fcb..730a3fe7d747178b8d0d5c7a40279ea825770b86 100644 (file)
 #include "output-def.hh"
 #include "pointer-group-interface.hh"
 
+static bool
+non_empty_barline (Grob *me)
+{
+  return Bar_line::has_interface (me) && !me->extent (me, X_AXIS).is_empty ();
+}
+
 /*
   TODO: detect hshifts due to collisions, and account for them in
   spacing?
@@ -80,7 +86,7 @@ Note_spacing::get_spacing (Grob *me, Item *right_col,
     {
       Grob *bar = Pointer_group_interface::find_grob (right_col,
                                                      ly_symbol2scm ("elements"),
-                                                     Bar_line::has_interface);
+                                                     non_empty_barline);
 
       if (bar)
        {