From: Han-Wen Nienhuys Date: Sat, 6 Jan 2007 19:49:39 +0000 (+0100) Subject: use unbreakable-spanner-interface for Beam too. X-Git-Tag: release/2.11.10-1~49 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=a905dbde62f57143b45fc94608b30e4ba371c0a4;p=lilypond.git use unbreakable-spanner-interface for Beam too. --- diff --git a/lily/auto-beam-engraver.cc b/lily/auto-beam-engraver.cc index af6eae454a..ac413b3350 100644 --- a/lily/auto-beam-engraver.cc +++ b/lily/auto-beam-engraver.cc @@ -238,8 +238,12 @@ Auto_beam_engraver::end_beam () else { finished_beam_ = create_beam (); + if (finished_beam_) - finished_grouping_ = grouping_; + { + announce_end_grob (finished_beam_, SCM_EOL); + finished_grouping_ = grouping_; + } delete stems_; stems_ = 0; grouping_ = 0; diff --git a/lily/beam-engraver.cc b/lily/beam-engraver.cc index 5ddf31008f..0432218ce2 100644 --- a/lily/beam-engraver.cc +++ b/lily/beam-engraver.cc @@ -35,7 +35,7 @@ protected: Spanner *beam_; Stream_event *prev_start_ev_; - Stream_event *now_stop_ev_; + Stream_event *stop_ev_; Beaming_pattern *beam_info_; Beaming_pattern *finished_beam_info_; @@ -91,7 +91,7 @@ Beam_engraver::Beam_engraver () finished_beam_ = 0; finished_beam_info_ = 0; beam_info_ = 0; - now_stop_ev_ = 0; + stop_ev_ = 0; start_ev_ = 0; prev_start_ev_ = 0; } @@ -105,7 +105,7 @@ Beam_engraver::listen_beam (Stream_event *ev) if (d == START && valid_start_point ()) ASSIGN_EVENT_ONCE (start_ev_, ev); else if (d == STOP && valid_end_point ()) - ASSIGN_EVENT_ONCE (now_stop_ev_, ev); + ASSIGN_EVENT_ONCE (stop_ev_, ev); } void @@ -138,6 +138,10 @@ Beam_engraver::process_music () beam_info_ = new Beaming_pattern; /* urg, must copy to Auto_beam_engraver too */ } + + typeset_beam (); + if (stop_ev_ && beam_) + announce_end_grob (beam_, stop_ev_->self_scm ()); } void @@ -171,13 +175,12 @@ Beam_engraver::start_translation_timestep () void Beam_engraver::stop_translation_timestep () { - typeset_beam (); - if (now_stop_ev_) + if (stop_ev_) { finished_beam_ = beam_; finished_beam_info_ = beam_info_; - now_stop_ev_ = 0; + stop_ev_ = 0; beam_ = 0; beam_info_ = 0; typeset_beam (); @@ -319,7 +322,7 @@ Grace_beam_engraver::listen_beam (Stream_event *ev) if (d == START && valid_start_point ()) start_ev_ = ev; else if (d == STOP && valid_end_point ()) - now_stop_ev_ = ev; + stop_ev_ = ev; } diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm index 7163fae604..87ee472c3b 100644 --- a/scm/define-grobs.scm +++ b/scm/define-grobs.scm @@ -351,6 +351,7 @@ (meta . ((class . Spanner) (object-callbacks . ((normal-stems . ,ly:beam::calc-normal-stems))) (interfaces . (staff-symbol-referencer-interface + unbreakable-spanner-interface beam-interface)))))) (BendAfter