>From 6b90a06e7c41998f3b5a9dcaffcb2665000ec4f2 Mon Sep 17 00:00:00 2001 From: Patrick McCarty Date: Thu, 13 Aug 2009 15:38:24 -0700 Subject: [PATCH] Attempt to fix #379 and #427 --- lily/include/slur-scoring.hh | 2 -- lily/phrasing-slur-engraver.cc | 10 ++++++++++ lily/slur-scoring.cc | 25 ++----------------------- 3 files changed, 12 insertions(+), 25 deletions(-) diff --git a/lily/include/slur-scoring.hh b/lily/include/slur-scoring.hh index 6c4dd5d..b127ea3 100644 --- a/lily/include/slur-scoring.hh +++ b/lily/include/slur-scoring.hh @@ -108,8 +108,6 @@ struct Slur_score_state vector get_extra_encompass_infos () const; Real move_away_from_staffline (Real y, Grob *on_staff) const; int get_closest_index (SCM inspect_quants) const; - - Grob *breakable_bound_item (Direction) const; }; void set_slur_control_points (Grob *me); diff --git a/lily/phrasing-slur-engraver.cc b/lily/phrasing-slur-engraver.cc index 4cd0c6e..7d7a485 100644 --- a/lily/phrasing-slur-engraver.cc +++ b/lily/phrasing-slur-engraver.cc @@ -171,6 +171,16 @@ Phrasing_slur_engraver::process_music () void Phrasing_slur_engraver::stop_translation_timestep () { + if (Grob *g = unsmob_grob (get_property ("currentCommandColumn"))) + { + for (vsize i = 0; i < end_slurs_.size (); i++) + Slur::add_extra_encompass (end_slurs_[i], g); + + if (!events_[START]) + for (vsize i = 0; i < slurs_.size (); i++) + Slur::add_extra_encompass (slurs_[i], g); + } + end_slurs_.clear (); events_[START] = events_[STOP] = 0; } diff --git a/lily/slur-scoring.cc b/lily/slur-scoring.cc index bb2b1f3..ef16fc7 100644 --- a/lily/slur-scoring.cc +++ b/lily/slur-scoring.cc @@ -375,23 +375,6 @@ Slur_score_state::get_best_curve () return configurations_[opt_idx]->curve_; } -Grob * -Slur_score_state::breakable_bound_item (Direction d) const -{ - Grob *col = slur_->get_bound (d)->get_column (); - - extract_grob_set (slur_, "encompass-objects", extra_encompasses); - - for (vsize i = 0; i < extra_encompasses.size (); i++) - { - Item *item = dynamic_cast (extra_encompasses[i]); - if (item && col == item->get_column ()) - return item; - } - - return 0; -} - int Slur_score_state::get_closest_index (SCM inspect_quants) const { @@ -507,12 +490,8 @@ Slur_score_state::get_base_attachments () const Real x = 0; Real y = 0; - if (Grob *g = breakable_bound_item (d)) - { - x = robust_relative_extent (g, common_[X_AXIS], X_AXIS)[RIGHT]; - } - else if (d == RIGHT) - x = robust_relative_extent (extremes_[d].bound_, common_[X_AXIS], X_AXIS)[d]; + if (d == RIGHT) + x = robust_relative_extent (extremes_[d].bound_, common_[X_AXIS], X_AXIS)[LEFT]; else x = slur_->get_broken_left_end_align (); -- 1.6.4