lilypond-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Prevents SpanBar Script collisions. (issue 5478064)


From: mtsolo
Subject: Prevents SpanBar Script collisions. (issue 5478064)
Date: Sun, 11 Dec 2011 15:54:08 +0000

Reviewers: ,

Message:
Hey all,

The idea of this patch is that cross-staff grobs should be counted in
axis groups unless they lead to cyclical callbacks (which is the case
with Stems).  It fixes issue 2065.

Cheers,
MS

Description:
Prevents SpanBar Script collisions.

Please review this at http://codereview.appspot.com/5478064/

Affected files:
  A input/regression/span-bar-articulation.ly
  M lily/axis-group-interface.cc


Index: input/regression/span-bar-articulation.ly
diff --git a/input/regression/span-bar-articulation.ly b/input/regression/span-bar-articulation.ly
new file mode 100644
index 0000000000000000000000000000000000000000..ee867543540bf63831ec898323955ad373651db2
--- /dev/null
+++ b/input/regression/span-bar-articulation.ly
@@ -0,0 +1,13 @@
+\version "2.15.22"
+
+\header {
+  texidoc = "Articulations on cross-staff stems do not collide with
+span bars."
+}
+
+\new GrandStaff <<
+  \new Staff = "a" {g1 R s }
+  \new Staff = "b" {
+    \clef bass R1 r2. g8( b |
+    d'\prall\espressivo \change Staff="a" b') g'2.}
+>>
Index: lily/axis-group-interface.cc
diff --git a/lily/axis-group-interface.cc b/lily/axis-group-interface.cc
index de9e48a1b4f6a949e5233d065e630d4103737252..dd99c723e7e8a582a41773ab4404519d4a41daf3 100644
--- a/lily/axis-group-interface.cc
+++ b/lily/axis-group-interface.cc
@@ -31,6 +31,7 @@
 #include "separation-item.hh"
 #include "skyline-pair.hh"
 #include "staff-grouper-interface.hh"
+#include "stem.hh"
 #include "stencil.hh"
 #include "system.hh"
 #include "warn.hh"
@@ -326,7 +327,8 @@ Axis_group_interface::relative_pure_height (Grob *me, int start, int end)
       Interval_t<int> rank_span = g->spanned_rank_interval ();
       if (rank_span[LEFT] <= end && rank_span[RIGHT] >= start
           && g->pure_is_visible (start, end)
-          && !to_boolean (g->get_property ("cross-staff")))
+          && !(to_boolean (g->get_property ("cross-staff"))
+               && Stem::has_interface (g)))
         {
           Interval dims = g->pure_height (common, start, end);
           if (!dims.is_empty ())





reply via email to

[Prev in Thread] Current Thread [Next in Thread]