From 704a0bcff798abdeabe103f874c4443f5f474b00 Mon Sep 17 00:00:00 2001 From: Neil Puttock Date: Sun, 10 Jul 2011 22:59:33 +0100 Subject: [PATCH] Fix #1751: Create HorizontalBracket grobs with correct event-cause. * input/regression (horizontal-bracket-tweak.ly) new regtest: test \tweak behaviour for nested brackets * lily/horizontal-bracket-engraver.cc (stop_translation_timestep): clear stored start-events so they don't hang around beyond the current timestep --- input/regression/horizontal-bracket-tweak.ly | 20 ++++++++++ lily/horizontal-bracket-engraver.cc | 42 ++++++++++---------- 2 files changed, 41 insertions(+), 21 deletions(-) create mode 100644 input/regression/horizontal-bracket-tweak.ly diff --git a/input/regression/horizontal-bracket-tweak.ly b/input/regression/horizontal-bracket-tweak.ly new file mode 100644 index 0000000000..ebd70698d5 --- /dev/null +++ b/input/regression/horizontal-bracket-tweak.ly @@ -0,0 +1,20 @@ +\version "2.15.5" + +\header { + texidoc = "Horizontal brackets are created with the correct event-cause, ensuring +tweaks are applied to the correct spanner." +} + +\layout { + \context { + \Voice + \consists "Horizontal_bracket_engraver" + } +} + +\relative c' { + c1-\tweak #'thickness #6 \startGroup + c1\startGroup + c1\stopGroup + c1\stopGroup +} diff --git a/lily/horizontal-bracket-engraver.cc b/lily/horizontal-bracket-engraver.cc index 2f67825a06..9d5c00503d 100644 --- a/lily/horizontal-bracket-engraver.cc +++ b/lily/horizontal-bracket-engraver.cc @@ -19,12 +19,12 @@ #include "engraver.hh" #include "international.hh" +#include "item.hh" #include "note-column.hh" #include "pointer-group-interface.hh" #include "side-position-interface.hh" -#include "stream-event.hh" #include "spanner.hh" -#include "item.hh" +#include "stream-event.hh" #include "translator.icc" @@ -32,8 +32,8 @@ class Horizontal_bracket_engraver : public Engraver { public: TRANSLATOR_DECLARATIONS (Horizontal_bracket_engraver); - vector bracket_stack_; - vector events_; + vector bracket_stack_; + vector events_; vsize pop_count_; vsize push_count_; @@ -43,22 +43,6 @@ public: DECLARE_TRANSLATOR_LISTENER (note_grouping); }; -ADD_ACKNOWLEDGER (Horizontal_bracket_engraver, note_column); -ADD_TRANSLATOR (Horizontal_bracket_engraver, - /* doc */ - "Create horizontal brackets over notes for musical analysis" - " purposes.", - - /* create */ - "HorizontalBracket ", - - /* read */ - "", - - /* write */ - "" - ); - Horizontal_bracket_engraver::Horizontal_bracket_engraver () { pop_count_ = 0; @@ -117,10 +101,26 @@ Horizontal_bracket_engraver::process_music () void Horizontal_bracket_engraver::stop_translation_timestep () { - for (int i = pop_count_; i--;) + for (vsize i = pop_count_; i--;) if (bracket_stack_.size ()) bracket_stack_.pop_back (); pop_count_ = 0; push_count_ = 0; + events_.clear (); } +ADD_ACKNOWLEDGER (Horizontal_bracket_engraver, note_column); +ADD_TRANSLATOR (Horizontal_bracket_engraver, + /* doc */ + "Create horizontal brackets over notes for musical analysis" + " purposes.", + + /* create */ + "HorizontalBracket ", + + /* read */ + "", + + /* write */ + "" + ); -- 2.39.5