-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)
#include "context-def.hh"
#include "context.hh"
#include "dispatcher.hh"
+#include "international.hh"
#include "main.hh"
#include "music.hh"
#include "output-def.hh"
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;
}
}
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;
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))