X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=lily%2Frest-collision-engraver.cc;h=af3d0ecc8903c03a8a1d5e05e7c009abe2981e5f;hb=f085824b2182c1f0fa2c5118884770ac7ff775c7;hp=572bbf3bc06c3eeb67a14aaed5148e5f9f5de105;hpb=7e72a1e50e94a7f9738d62599de79fe7745f600c;p=lilypond.git diff --git a/lily/rest-collision-engraver.cc b/lily/rest-collision-engraver.cc index 572bbf3bc0..af3d0ecc89 100644 --- a/lily/rest-collision-engraver.cc +++ b/lily/rest-collision-engraver.cc @@ -15,7 +15,7 @@ class Rest_collision_engraver : public Engraver { Item* rest_collision_; - + int rest_count_; Link_array note_columns_; protected: virtual void acknowledge_grob (Grob_info); @@ -30,18 +30,21 @@ public: Rest_collision_engraver::Rest_collision_engraver () { rest_collision_ =0; + rest_count_ = 0; } void Rest_collision_engraver::process_acknowledged_grobs () { - if (rest_collision_ || note_columns_.size () < 2) + if (rest_collision_ + || note_columns_.is_empty () + || !rest_count_) return; rest_collision_ = make_item ("RestCollision"); announce_grob(rest_collision_, SCM_EOL); - for (int i=0; i< note_columns_.size (); i++) + for (int i=0; i < note_columns_.size (); i++) Rest_collision::add_column (rest_collision_,note_columns_[i]); } @@ -49,7 +52,11 @@ void Rest_collision_engraver::acknowledge_grob (Grob_info i) { if (Note_column::has_interface (i.grob_)) - note_columns_.push (i.grob_); + { + note_columns_.push (i.grob_); + if (Note_column::has_rests (i.grob_)) + rest_count_ ++; + } } void @@ -61,7 +68,9 @@ Rest_collision_engraver::stop_translation_timestep () rest_collision_ = 0; } note_columns_.clear (); + rest_count_ = 0; } + ENTER_DESCRIPTION(Rest_collision_engraver, /* descr */ "Handles collisions of rests.", /* creats*/ "RestCollision",