From: Han-Wen Nienhuys Date: Sat, 17 Feb 2007 22:35:37 +0000 (+0100) Subject: Fix #295. X-Git-Tag: release/2.11.19-1~3 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=cde53873a239e07c06b1df80e9aecabc18eb522b;p=lilypond.git Fix #295. For invisible stems, use note head extent for gapped beams. --- diff --git a/input/regression/chord-tremolo-whole.ly b/input/regression/chord-tremolo-whole.ly new file mode 100644 index 0000000000..74f4e57e64 --- /dev/null +++ b/input/regression/chord-tremolo-whole.ly @@ -0,0 +1,3 @@ + +\version "2.11.16" +\relative c'''{ \repeat tremolo 32{ g64 a }} diff --git a/lily/beam.cc b/lily/beam.cc index 02ee8c4f3b..f9bd03d9d2 100644 --- a/lily/beam.cc +++ b/lily/beam.cc @@ -453,7 +453,24 @@ Beam::get_beam_segments (Grob *me_grob, Grob **common) { current.horizontal_[event_dir] += event_dir * segs[j].width_/2; if (segs[j].gapped_) - current.horizontal_[event_dir] -= event_dir * gap_length; + { + current.horizontal_[event_dir] -= event_dir * gap_length; + + if (Stem::is_invisible (segs[j].stem_)) + { + /* + Need to do this in case of whole notes. We don't want the + heads to collide with the beams. + */ + extract_grob_set (segs[j].stem_, "note-heads", heads); + + for (vsize k = 0; k < heads.size (); k ++) + current.horizontal_[event_dir] + = event_dir * min (event_dir * current.horizontal_[event_dir], + - gap_length/2 + + event_dir * heads[k]->extent (commonx, X_AXIS)[-event_dir]); + } + } } if (event_dir == RIGHT)