X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fnote-collision.cc;h=8ee404cb067e5a0d1468ed69112a09d9b88f516a;hb=8f2493cf80f90a12938c305c5fcb01de7e9a03fc;hp=488d77f1b72b4cffc07969dc20c53172eb1068ee;hpb=ade39b0e10fdf852db6254afac36473a1c66a4d3;p=lilypond.git diff --git a/lily/note-collision.cc b/lily/note-collision.cc index 488d77f1b7..8ee404cb06 100644 --- a/lily/note-collision.cc +++ b/lily/note-collision.cc @@ -306,7 +306,12 @@ check_meshing_chords (Grob *me, far to the right. */ if (Dot_column::has_interface (parent)) - Side_position_interface::add_support (parent, nu); + { + Grob *stem = unsmob_grob (nu->get_object ("stem")); + extract_grob_set (stem, "note-heads", heads); + for (vsize i = 0; i < heads.size (); i++) + Side_position_interface::add_support (parent, heads[i]); + } } Direction d = UP; @@ -319,7 +324,7 @@ check_meshing_chords (Grob *me, } -MAKE_SCHEME_CALLBACK(Note_collision_interface, calc_positioning_done, 1) +MAKE_SCHEME_CALLBACK (Note_collision_interface, calc_positioning_done, 1) SCM Note_collision_interface::calc_positioning_done (SCM smob) { @@ -331,7 +336,7 @@ Note_collision_interface::calc_positioning_done (SCM smob) Direction d = UP; do { - for (vsize i = cg[d].size(); i--; ) + for (vsize i = cg[d].size (); i--; ) { /* Trigger positioning @@ -429,8 +434,7 @@ Note_collision_interface::get_clash_groups (Grob *me) */ SCM Note_collision_interface::automatic_shift (Grob *me, - Drul_array < vector - > clash_groups) + Drul_array > clash_groups) { Drul_array < vector > shifts; SCM tups = SCM_EOL; @@ -502,6 +506,23 @@ Note_collision_interface::automatic_shift (Grob *me, } while ((flip (&d)) != UP); + + /* + see input/regression/dot-up-voice-collision.ly + */ + for (vsize i = 0; i < clash_groups[UP].size (); i++) + { + Grob *g = clash_groups[UP][i]; + Grob *dc = Note_column::dot_column (g); + + if (dc) + for (vsize j = i + 1; j < clash_groups[UP].size (); j++) + { + Grob *stem = Note_column::get_stem (clash_groups[UP][j]); + Side_position_interface::add_support (dc, stem); + } + } + /* Check if chords are meshing */