- // Many cross-staff grobs do not have good height estimations.
- // We give the grob the best chance of not colliding by shifting
- // it to the maximum height in the case of cross-staff alignment.
- // This means, in other words, that the old way things were done
- // (using boxes instead of skylines) is just reactivated for
- // alignment to cross-staff grobs.
- if (aligns_to_cross_staff)
- dim.set_minimum_height (dim.max_height ());
+ // Sometimes, we want to side position for grobs but they
+ // don't position against anything. Some cases where this is true:
+ // - StanzaNumber if the supporting lyrics are hara-kiri'd
+ // SystemStartBracket
+ // InstrumentName
+ // In all these cases, we set the height of the support to 0.
+ // This becomes then like the self-alignment-interface with the
+ // caveat that there is padding added.
+ // TODO: if there is a grob that never has side-support-elements
+ // (like InstrumentName), why are we using this function? Isn't it
+ // overkill? A function like self-alignment-interface with padding
+ // works just fine.
+ // One could even imagine the two interfaces merged, as the only
+ // difference is that in self-alignment-interface we align on the parent
+ // where as here we align on a group of grobs.
+ if (dim.is_empty ())
+ {
+ dim = Skyline (dim.direction ());
+ dim.set_minimum_height (0.0);
+ }