From: fred Date: Tue, 26 Mar 2002 23:21:40 +0000 (+0000) Subject: lilypond-1.3.49 X-Git-Tag: release/1.5.59~1642 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=331ed4f6722422e3ac0f8a74bf70e25bab3ee9e0;p=lilypond.git lilypond-1.3.49 --- diff --git a/input/test/clefs.ly b/input/test/clefs.ly index 227b8a931a..364547fed3 100644 --- a/input/test/clefs.ly +++ b/input/test/clefs.ly @@ -11,8 +11,8 @@ \clef "tenor";c'1^"{tenor}" \bar "||"; \clef "baritone";c'1^"{baritone}" \bar "||"; \clef "varbaritone";c'1^"{varbaritone}" \bar "||"; - \clef "G_8";c'1^"{sub 8?}" \bar "||"; - \clef "G^8";c'1^"{sup 8?}" \bar "||"; + \clef "G_8";c'1^"{sub 8?}" c'1 \bar "||"; + \clef "G^8";c'1^"{sup 8?}" c'1 \bar "||"; \clef "bass";c'1^"{bass}" \bar "||"; \clef "subbass";c'1^"{subbass}" \bar "||"; \property Staff.clefStyle="transparent" diff --git a/lily/clef-engraver.cc b/lily/clef-engraver.cc index 8df115231c..de2cb687c7 100644 --- a/lily/clef-engraver.cc +++ b/lily/clef-engraver.cc @@ -224,6 +224,14 @@ Clef_engraver::do_pre_move_processing() if (octavate_p_) octavate_p_->set_elt_property("visibility-lambda", all); } + else + { + SCM beg = scm_eval (ly_symbol2scm ("begin-of-line-visible")); + + clef_p_->set_elt_property ("visibility-lambda", beg); + if (octavate_p_) + octavate_p_->set_elt_property ("visibility-lambda", beg); + } typeset_element (clef_p_); clef_p_ =0; diff --git a/lily/score-element.cc b/lily/score-element.cc index adede15101..c8307754ce 100644 --- a/lily/score-element.cc +++ b/lily/score-element.cc @@ -247,7 +247,7 @@ Score_element::calculate_dependencies (int final, int busy, status_i_= busy; - for (SCM d= get_elt_property ("dependencies"); d != SCM_EOL; d = gh_cdr (d)) + for (SCM d= get_elt_property ("dependencies"); gh_pair_p (d); d = gh_cdr (d)) { unsmob_element (gh_car (d)) ->calculate_dependencies (final, busy, funcptr); @@ -377,17 +377,22 @@ Score_element::handle_broken_smobs (SCM src, SCM criterion) } else { - Score_element * ln = unsmob_element ( criterion); - Line_of_score * line = dynamic_cast (ln); - Score_element * br =0; - Line_of_score * dep_line = sc->line_l (); + + Line_of_score * line = dynamic_cast (unsmob_element ( criterion)); + Line_of_score * dep_line = sc->line_l (); if (dep_line != line) { - br = sc->find_broken_piece (line); + Score_element * br = sc->find_broken_piece (line); return (br) ? br->self_scm_ : SCM_UNDEFINED; } if (!dep_line) return SCM_UNDEFINED; + + if (!sc->common_refpoint (line, X_AXIS) + || !sc->common_refpoint (line, Y_AXIS)) + { + return SCM_UNDEFINED; + } } } else if (gh_pair_p (src)) @@ -438,10 +443,28 @@ Score_element::handle_broken_dependencies() } } + Line_of_score *line = line_l(); - element_property_alist_ - = handle_broken_smobs (element_property_alist_, - line ? line->self_scm_ : SCM_UNDEFINED); + + if (line && common_refpoint (line, X_AXIS) && common_refpoint (line, Y_AXIS)) + { + element_property_alist_ + = handle_broken_smobs (element_property_alist_, + line ? line->self_scm_ : SCM_UNDEFINED); + } + else + { + /* + This element is `invalid'; it has been removed from all dependencies, so + let's junk the element itself. + + */ + element_property_alist_ = SCM_EOL; + set_extent_callback (0, Y_AXIS); + set_extent_callback (0, X_AXIS); + } + + } @@ -609,10 +632,6 @@ Score_element::fixup_refpoint () { Score_element * newparent = parent->find_broken_piece (line_l ()); set_parent (newparent, ax); - if (!newparent) - { - programming_error ("Orphaned score-element."); - } } if (Item * i = dynamic_cast (this)) diff --git a/ly/params.ly b/ly/params.ly index e0382e13e8..6b0629c7ce 100644 --- a/ly/params.ly +++ b/ly/params.ly @@ -73,7 +73,7 @@ arithmetic_basicspace = 2.0; #'Stem_tremolo::beam-width = 1.5 * \quartwidth ; #'Left_edge_item::visibility-lambda = #begin-of-line-visible -#'Clef_item::visibility-lambda = #begin-of-line-visible + #'Key_item::visibility-lambda = #begin-of-line-visible #'Breathing_sign::visibility-lambda = #begin-of-line-invisible