From: David Nalesnik Date: Sat, 29 Mar 2014 12:25:40 +0000 (-0500) Subject: Bad positioning of tuplet numbers on kneed beams with Beam.positions override. X-Git-Tag: release/2.19.4-1~5 X-Git-Url: https://git.donarmstrong.com/?p=lilypond.git;a=commitdiff_plain;h=227422e1ebf5390534e74709fe006edb29133712 Bad positioning of tuplet numbers on kneed beams with Beam.positions override. Previously, when Beam.positions was overridden, tuplet numbers on kneed beams would automatically be placed according to the bracket instead of against the beam. This happened because the check for whether the beam was kneed or not returned false in such cases. This patch replaces that check. It also: --adds a regtest demonstrating behavior with Beam.position overrides --removes some redundant code --- diff --git a/input/regression/tuplet-number-kneed-beam-positions.ly b/input/regression/tuplet-number-kneed-beam-positions.ly new file mode 100644 index 0000000000..3618ed21e9 --- /dev/null +++ b/input/regression/tuplet-number-kneed-beam-positions.ly @@ -0,0 +1,39 @@ +\version "2.19.4" + +\header { + texidoc = "Tuplet numbers are placed next to kneed beams when +@code{Beam.positions} is overridden." +} + +\layout { + indent = 0 + ragged-right = ##t +} + +top = \change Staff = "1" +bottom = \change Staff = "2" + +music = \relative c { + \override Beam.auto-knee-gap = 1 + \tuplet 3/2 4 { + c8 \top e'' \bottom g,, + \once \override Beam.positions = #'(4.5 . 4.5) + c,8 \top e'' \bottom g,, + \once \override Beam.positions = #'(-7.0 . -7.0) + \top e''8 \bottom c,, c, + \once \override Beam.positions = #'(-4.5 . -4.5) + \top e'''8 \bottom c,, c, + } +} + +\score { + \new PianoStaff << + \new Staff = "1" { + s1 + } + \new Staff = "2" { + \clef bass + \music + } + >> +} diff --git a/lily/tuplet-number.cc b/lily/tuplet-number.cc index ad27ac958c..9d4ce784b1 100644 --- a/lily/tuplet-number.cc +++ b/lily/tuplet-number.cc @@ -166,7 +166,7 @@ Tuplet_number::knee_position_against_beam (Grob *me_grob, Grob *ref_stem) Grob *beam = Stem::get_beam (ref_stem); - if (!beam || !to_boolean (beam->get_property ("knee"))) + if (!beam || !Beam::is_knee (beam)) return false; Grob *commonx = Tuplet_bracket::get_common_x (tuplet); @@ -362,10 +362,6 @@ Tuplet_number::calc_y_offset (SCM smob) if (!ref_stem || !knee_position_against_beam (me, ref_stem)) return to_bracket; - Grob *beam = Stem::get_beam (ref_stem); - if (!beam || !to_boolean (beam->get_property ("knee"))) - return to_bracket; - /* First, we calculate the Y-offset of the tuplet number as if it is positioned at the reference stem. @@ -388,6 +384,7 @@ Tuplet_number::calc_y_offset (SCM smob) */ if (to_boolean (ref_stem->get_property ("french-beaming"))) { + Grob *beam = Stem::get_beam (ref_stem); Real beam_translation = Beam::get_beam_translation (beam); SCM beaming = ref_stem->get_property ("beaming"); y_offset += ref_stem_dir