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;
}
"outside-staff-horizontal-padding "
"outside-staff-padding "
"outside-staff-priority "
+ "pure-Y-offset-in-progress "
"rotation "
"springs-and-rods "
"staff-symbol "
(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.")
(direction . ,UP)
(self-alignment-X . ,CENTER)
(meta . ((class . Item)
- (interfaces . (system-start-text-interface
- side-position-interface
+ (interfaces . (side-position-interface
font-interface))))))
(KeyCancellation
;; (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))))))