]> git.donarmstrong.com Git - lilypond.git/commitdiff
use unbreakable-spanner-interface for Beam too.
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Sat, 6 Jan 2007 19:49:39 +0000 (20:49 +0100)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Sat, 6 Jan 2007 19:49:39 +0000 (20:49 +0100)
lily/auto-beam-engraver.cc
lily/beam-engraver.cc
scm/define-grobs.scm

index af6eae454a244ee1ac886e16a7be63bacf19a8d6..ac413b33501880c6202e9925f1364d3f78756009 100644 (file)
@@ -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;
index 5ddf31008f79db006651f98d046dde16737dd988..0432218ce2a02337f4cdf732d395f67a54e23d09 100644 (file)
@@ -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;
 }
 
 
index 7163fae6047df633de2b62dcc1030d039122d338..87ee472c3b193cbdfae0976af2e237e2b50ed6df 100644 (file)
        (meta . ((class . Spanner)
                 (object-callbacks . ((normal-stems . ,ly:beam::calc-normal-stems))) 
                 (interfaces . (staff-symbol-referencer-interface
+                               unbreakable-spanner-interface
                                beam-interface))))))
 
     (BendAfter