This is done by not ignoring cross-staff grobs in axis-group-interface
pure height calculations save stems, whose pure height calculation would
lead to a circular dependency.
--- /dev/null
+\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.}
+>>
#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"
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 ())