From: Joe Neeman Date: Mon, 2 Jul 2007 21:53:13 +0000 (+0800) Subject: check for cyclic dependencies in pure Y-offset stuff X-Git-Tag: release/2.11.28-1~21^2~18 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=1c621847dc60cd425b20864236c95aec2591a101;p=lilypond.git check for cyclic dependencies in pure Y-offset stuff --- diff --git a/lily/grob.cc b/lily/grob.cc index 495fe2437f..34b742e7f5 100644 --- a/lily/grob.cc +++ b/lily/grob.cc @@ -288,16 +288,23 @@ Grob::pure_relative_y_coordinate (Grob const *refp, int start, int end) Real off = 0; if (dim_cache_[Y_AXIS].offset_) - off = *dim_cache_[Y_AXIS].offset_; + { + if (to_boolean (get_property ("pure-Y-offset-in-progress"))) + programming_error ("cyclic chain in pure-Y-offset callbacks"); + + off = *dim_cache_[Y_AXIS].offset_; + } else { SCM proc = get_property_data ("Y-offset"); dim_cache_[Y_AXIS].offset_ = new Real (0.0); + set_property ("pure-Y-offset-in-progress", SCM_BOOL_T); off = robust_scm2double (call_pure_function (proc, scm_list_1 (self_scm ()), start, end), 0.0); + del_property ("pure-Y-offset-in-progress"); delete dim_cache_[Y_AXIS].offset_; dim_cache_[Y_AXIS].offset_ = 0; } @@ -625,6 +632,7 @@ ADD_INTERFACE (Grob, "outside-staff-horizontal-padding " "outside-staff-padding " "outside-staff-priority " + "pure-Y-offset-in-progress " "rotation " "springs-and-rods " "staff-symbol " diff --git a/scm/define-grob-properties.scm b/scm/define-grob-properties.scm index c4dc73d095..0cdcf8f825 100644 --- a/scm/define-grob-properties.scm +++ b/scm/define-grob-properties.scm @@ -637,6 +637,7 @@ where this is set in.") (normal-stems ,ly:grob-array? "Array of visible stems.") (note-heads ,ly:grob-array? "List of note head grobs") (note-head ,ly:grob? "A single note head") + (pure-Y-offset-in-progress ,boolean? "A debugging aid for catching cyclic dependencies.") (right-items ,ly:grob-array? "") (right-neighbors ,ly:grob-array? "see left-neighbors") (separation-item ,ly:grob? "A separation item.") diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm index d9faba5d70..2109c88744 100644 --- a/scm/define-grobs.scm +++ b/scm/define-grobs.scm @@ -825,8 +825,7 @@ (direction . ,UP) (self-alignment-X . ,CENTER) (meta . ((class . Item) - (interfaces . (system-start-text-interface - side-position-interface + (interfaces . (side-position-interface font-interface)))))) (KeyCancellation @@ -1239,6 +1238,7 @@ ;; (font-size . -6) (font-name . "sans") (Y-extent . #f) (meta . ((class . Paper_column) (interfaces . (paper-column-interface + separation-item-interface axis-group-interface spaceable-grob-interface))))))