]> git.donarmstrong.com Git - lilypond.git/commitdiff
*** empty log message ***
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Fri, 26 May 2006 10:42:10 +0000 (10:42 +0000)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Fri, 26 May 2006 10:42:10 +0000 (10:42 +0000)
ChangeLog
lily/translator-group.cc
lily/tuplet-engraver.cc

index 47f0181aa671f218258ae5e1be92debf6593e4c9..52a833d1389bbb9aa001a0d6d40eb143e8aee7a6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,11 @@
-2006-05-25  Han-Wen Nienhuys  <hanwen@lilypond.org>
+2006-05-25  Erik Sandberg  <mandolaerik@gmail.com>
+
+       * translator-group.cc: send music events to engravers in
+       non-bottom contexts.
+
+       * tuplet-engraver.cc: process tuplet brackets in correct order.
+
+2006-05-24  Han-Wen Nienhuys  <hanwen@lilypond.org>
 
        * stepmake/aclocal.m4: STEPMAKE_PYTHON(): clear cached value since
        arg 2 might point us to a new binary (patch by Karl Hammar)
index 0fd2bc4d21a9866b7070f99d0f8b10869585ec6e..e2541996efcbc998c88a11da8a16ee9a22cb8979 100644 (file)
@@ -12,6 +12,7 @@
 #include "context-def.hh"
 #include "context.hh"
 #include "dispatcher.hh"
+#include "international.hh"
 #include "main.hh"
 #include "music.hh"
 #include "output-def.hh"
@@ -113,6 +114,16 @@ Translator_group::try_music (Music *m)
       if (t && t->try_music (m))
        return true;
     }
+    
+  // We couldn't swallow the event in this context. Try parent.
+  Context *p = context ()->get_parent_context ();
+  // Global context's translator group is a dummy, so don't try it.
+  if (p->get_parent_context())
+    // ES todo: Make Translators listeners directly instead.
+    return p->implementation ()->try_music (m);
+  else
+    // We have tried all possible contexts. Give up.
+    m->origin ()->warning (_f ("junking event: `%s'", m->name ()));
   return false;
 }
 
index ac38db14e33218ef41de12137135051240056933..92b062f11687f370df88497e1d95d62054248a26 100644 (file)
@@ -95,11 +95,11 @@ Tuplet_engraver::process_music ()
     }
   stopped_tuplets_.clear ();
 
-  if (!tuplets_.size ())
-    return;
-
-  for (vsize i = 0; i < tuplets_.size (); i++)
+  for (vsize j = tuplets_.size (); j > 0; j--)
     {
+      /* i goes from size-1 downto 0, inclusively */
+      vsize i = j - 1;
+
       if (tuplets_[i].bracket_)
        continue;
 
@@ -110,11 +110,12 @@ Tuplet_engraver::process_music ()
       tuplets_[i].number_->set_object ("bracket", tuplets_[i].bracket_->self_scm ());
       tuplets_[i].bracket_->set_object ("tuplet-number", tuplets_[i].number_->self_scm ());
       
+      if (i < tuplets_.size () - 1 && tuplets_[i + 1].bracket_)
+       Tuplet_bracket::add_tuplet_bracket (tuplets_[i].bracket_, tuplets_[i + 1].bracket_);
+      
       if (i > 0 && tuplets_[i - 1].bracket_)
-       Tuplet_bracket::add_tuplet_bracket (tuplets_[i].bracket_, tuplets_[i - 1].bracket_);
+       Tuplet_bracket::add_tuplet_bracket (tuplets_[i - 1].bracket_, tuplets_[i].bracket_);
 
-      if (i < tuplets_.size () - 1 && tuplets_[i + 1].bracket_)
-       Tuplet_bracket::add_tuplet_bracket (tuplets_[i + 1].bracket_, tuplets_[i].bracket_);
 
       SCM proc = get_property ("tupletNumberFormatFunction");
       if (ly_is_procedure (proc))