From 227422e1ebf5390534e74709fe006edb29133712 Mon Sep 17 00:00:00 2001 From: David Nalesnik Date: Sat, 29 Mar 2014 07:25:40 -0500 Subject: [PATCH] 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 --- .../tuplet-number-kneed-beam-positions.ly | 39 +++++++++++++++++++ lily/tuplet-number.cc | 7 +--- 2 files changed, 41 insertions(+), 5 deletions(-) create mode 100644 input/regression/tuplet-number-kneed-beam-positions.ly 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 -- 2.39.2