&& !to_boolean (me->get_property ("merge-differently-headed")))
merge_possible = false;
- if (merge_possible
- && head_up->get_property ("style") == ly_symbol2scm ("fa")
- && head_down->get_property ("style") == ly_symbol2scm ("fa"))
- {
- Interval uphead_size = head_up->extent (head_up, Y_AXIS);
- Offset att = Offset (0.0, -1.0);
- head_up->set_property ("stem-attachment", ly_offset2scm (att));
- head_up->set_property ("transparent", SCM_BOOL_T);
- }
-
/* Should never merge quarter and half notes, as this would make
them indistinguishable. */
if (merge_possible
Real shift_amount = 1;
bool touch = (ups[0] >= dps.back ());
+ /* As a special case, if the topmost part of the downstem chord is a second,
+ the top note of which is the same pitch as the lowest upstem note, they
+ shouldn't count as touching.
+ */
+ if (dps.back () == ups[0] && dps.size () > 1 && dps[dps.size() - 2] == ups[0] - 1)
+ touch = false;
+
if (touch)
shift_amount *= -1;
else if (Rhythmic_head::dot_count (head_up) < Rhythmic_head::dot_count (head_down))
stem_to_stem = true;
}
+
+ /* The solfa is a triangle, which is inverted depending on stem
+ direction. In case of a collision, one of them should be removed,
+ so the resulting note does not look like a block.
+ */
+ if (merge_possible
+ && head_up->get_property ("style") == ly_symbol2scm ("fa")
+ && head_down->get_property ("style") == ly_symbol2scm ("fa"))
+ {
+ Interval uphead_size = head_up->extent (head_up, Y_AXIS);
+ Offset att = Offset (0.0, -1.0);
+ head_up->set_property ("stem-attachment", ly_offset2scm (att));
+ head_up->set_property ("transparent", SCM_BOOL_T);
+ }
if (merge_possible)
{
}
ADD_INTERFACE (Note_collision_interface,
- "An object that handles collisions between notes with different stem "
- "directions and horizontal shifts. Most of the interesting properties "
- "are to be set in @ref{note-column-interface}: these are "
- "@code{force-hshift} and @code{horizontal-shift}.",
+ "An object that handles collisions between notes with"
+ " different stem directions and horizontal shifts. Most of"
+ " the interesting properties are to be set in"
+ " @ref{note-column-interface}: these are @code{force-hshift}"
+ " and @code{horizontal-shift}.",
/* properties */
"merge-differently-dotted "