From e331ac3a3cc1097b0816dff7bb2f1324e6f5cfd3 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Thu, 19 Sep 2002 10:03:00 +0000 Subject: [PATCH] (acknowledge_grob): also typeset LeftEdge item. --- ChangeLog | 6 +++++- lily/break-align-engraver.cc | 16 ++++++++++++---- lily/grob.cc | 20 ++++++++++++++++++++ lily/system.cc | 2 +- 4 files changed, 38 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index a904707014..139f596469 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,8 @@ - +2002-09-19 Han-Wen Nienhuys + + * lily/break-align-engraver.cc (acknowledge_grob): also typeset + LeftEdge item. + 2002-09-15 Werner Lemberg Improving LilyPond's output to make them ordinary TeX boxes with diff --git a/lily/break-align-engraver.cc b/lily/break-align-engraver.cc index c4d9bc893c..414d61db7b 100644 --- a/lily/break-align-engraver.cc +++ b/lily/break-align-engraver.cc @@ -18,6 +18,8 @@ class Break_align_engraver : public Engraver { Item *align_; Protected_scm column_alist_; + Item *edge_; + void add_to_group (SCM,Item*); protected: virtual void finalize (); @@ -71,13 +73,19 @@ Break_align_engraver::stop_translation_timestep () typeset_grob (align_); align_ = 0; } + if (edge_) + { + typeset_grob (edge_); + edge_ = 0; + } } Break_align_engraver::Break_align_engraver () { column_alist_ = SCM_EOL; - align_ =0; + edge_ = 0; + align_ = 0; } void @@ -103,9 +111,9 @@ Break_align_engraver::acknowledge_grob (Grob_info inf) announce_grob (align_, SCM_EOL); - Item * edge = new Item (get_property ("LeftEdge")); - add_to_group (edge->get_grob_property ("break-align-symbol"), edge); - announce_grob(edge, SCM_EOL); + edge_ = new Item (get_property ("LeftEdge")); + add_to_group (edge_->get_grob_property ("break-align-symbol"), edge_); + announce_grob(edge_, SCM_EOL); } add_to_group (align_name, item); diff --git a/lily/grob.cc b/lily/grob.cc index 382cbe2de7..d4f2e27bb0 100644 --- a/lily/grob.cc +++ b/lily/grob.cc @@ -372,6 +372,13 @@ Grob::handle_broken_dependencies () void Grob::suicide () { + if (!live ()) + return; + +#if 0 // see below. + String nm = name(); +#endif + mutable_property_alist_ = SCM_EOL; immutable_property_alist_ = SCM_EOL; @@ -383,6 +390,19 @@ Grob::suicide () dim_cache_[a].offset_callbacks_ = SCM_EOL; dim_cache_[a].offsets_left_ = 0; } + +#if 0 + /* + This can make debugging a little easier: we can still know what + the object used to be. However, since all its links have been + broken, it's usually more convenient to set a conditional + breakpoint in GDB before the property lists are wiped. + */ + mutable_property_alist_ = scm_acons (ly_symbol2scm ("name"), + scm_makfrom0str (nm.to_str0()), + mutable_property_alist_ + ); +#endif } void diff --git a/lily/system.cc b/lily/system.cc index 7275f543a0..20f97023a8 100644 --- a/lily/system.cc +++ b/lily/system.cc @@ -275,7 +275,7 @@ System::break_into_pieces (Array const &breaking) { System *system = dynamic_cast (clone ()); system->rank_ = i; - // system->set_immutable_grob_property ("rank", gh_int2scm (i)); + Link_array c (breaking[i].cols_); pscore_->typeset_line (system); -- 2.39.5