From: Han-Wen Nienhuys Date: Fri, 26 May 2006 10:42:10 +0000 (+0000) Subject: *** empty log message *** X-Git-Tag: release/2.9.7~29 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=1547df975ef6d6cc602c84860dc9244366f862fd;p=lilypond.git *** empty log message *** --- diff --git a/ChangeLog b/ChangeLog index 47f0181aa6..52a833d138 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,11 @@ -2006-05-25 Han-Wen Nienhuys +2006-05-25 Erik Sandberg + + * 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 * stepmake/aclocal.m4: STEPMAKE_PYTHON(): clear cached value since arg 2 might point us to a new binary (patch by Karl Hammar) diff --git a/lily/translator-group.cc b/lily/translator-group.cc index 0fd2bc4d21..e2541996ef 100644 --- a/lily/translator-group.cc +++ b/lily/translator-group.cc @@ -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; } diff --git a/lily/tuplet-engraver.cc b/lily/tuplet-engraver.cc index ac38db14e3..92b062f116 100644 --- a/lily/tuplet-engraver.cc +++ b/lily/tuplet-engraver.cc @@ -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))