]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/extender-engraver.cc
Fix some bugs in the dynamic engraver and PostScript backend
[lilypond.git] / lily / extender-engraver.cc
index 53938b24f6eee350da9b7995cf14ce3b85f715a5..d3b2e90972facbdee6b1579468aedafb9900d345 100644 (file)
 #include "lyric-extender.hh"
 #include "note-head.hh"
 #include "pointer-group-interface.hh"
-#include "stream-event.hh"
 #include "warn.hh"
 
-#include "translator.icc"
-
 void completize_extender (Spanner *sp);
 
 class Extender_engraver : public Engraver
 {
-  Stream_event *ev_;
+  Music *ev_;
   Spanner *extender_;
   Spanner *pending_extender_;
 
@@ -32,9 +29,9 @@ public:
   TRANSLATOR_DECLARATIONS (Extender_engraver);
 
 protected:
-  DECLARE_TRANSLATOR_LISTENER (extender);
   DECLARE_ACKNOWLEDGER (lyric_syllable);
   virtual void finalize ();
+  virtual bool try_music (Music *);
   void stop_translation_timestep ();
   void process_music ();
 };
@@ -46,11 +43,15 @@ Extender_engraver::Extender_engraver ()
   ev_ = 0;
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Extender_engraver, extender);
-void
-Extender_engraver::listen_extender (Stream_event *ev)
+bool
+Extender_engraver::try_music (Music *r)
 {
-  ASSIGN_EVENT_ONCE (ev_, ev);
+  if (!ev_)
+    {
+      ev_ = r;
+      return true;
+    }
+  return false;
 }
 
 void
@@ -141,6 +142,8 @@ Extender_engraver::finalize ()
     }
 }
 
+#include "translator.icc"
+
 ADD_ACKNOWLEDGER (Extender_engraver, lyric_syllable);
 ADD_TRANSLATOR (Extender_engraver,
                /* doc */ "Create lyric extenders",