]> git.donarmstrong.com Git - lilypond.git/commitdiff
Fix #1751: Create HorizontalBracket grobs with correct event-cause.
authorNeil Puttock <n.puttock@gmail.com>
Sun, 10 Jul 2011 21:59:33 +0000 (22:59 +0100)
committerNeil Puttock <n.puttock@gmail.com>
Sun, 10 Jul 2011 21:59:33 +0000 (22:59 +0100)
* 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 [new file with mode: 0644]
lily/horizontal-bracket-engraver.cc

diff --git a/input/regression/horizontal-bracket-tweak.ly b/input/regression/horizontal-bracket-tweak.ly
new file mode 100644 (file)
index 0000000..ebd7069
--- /dev/null
@@ -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
+}
index 2f67825a06ab2fa3438bca225d9ee57ebbff2340..9d5c00503dca8ce6758e623076678a957bee8606 100644 (file)
 
 #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<Spanner*> bracket_stack_;
-  vector<Stream_event*> events_;
+  vector<Spanner *> bracket_stack_;
+  vector<Stream_event *> 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 */
+               ""
+               );