2004-03-22 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ * input/regression/property-grace-polyphony.ly: new file.
+
+ * lily/translator-property.cc (execute_pushpop_property): only pop
+ one instance of the property. This fixes << \\ >> together with
+ \grace.
+
* lily/break-align-interface.cc (ordered_elements): we cannot
modify the #'elements property, so return reordered array.
--- /dev/null
+
+\header {
+
+ texidoc = "Property overrides and reverts from @code{\\grace} do
+ not interfere with the overrides and reverts from polyphony."
+
+}
+
+\version "2.1.32"
+\score {
+ \notes \relative c'' {
+ <<
+ { \grace e8 d2 }
+ \\ { a2 } >>
+ }
+}
+
while (prev_alist != daddy)
{
- if (!gh_equal_p (gh_caar (prev_alist), eltprop))
+ if (gh_equal_p (gh_caar (prev_alist), eltprop))
{
- *tail = gh_cons (gh_car (prev_alist), daddy);
- tail = SCM_CDRLOC (*tail);
+ prev_alist = gh_cdr (prev_alist);
+ break ;
}
+
+
+ *tail = gh_cons (gh_car (prev_alist), SCM_EOL);
+ tail = SCM_CDRLOC (*tail);
prev_alist = gh_cdr (prev_alist);
}
- if (new_alist == SCM_EOL)
+ if (new_alist == SCM_EOL && prev_alist == daddy)
trg->unset_property (prop);
else
- trg->internal_set_property (prop, gh_cons (new_alist, daddy));
+ {
+ *tail = prev_alist;
+ trg->internal_set_property (prop, gh_cons (new_alist, daddy));
+ }
}
}
else
metronomeMarkFormatter = #format-metronome-markup
graceSettings = #`#(
(Voice Stem direction 1)
-
;; TODO: should take from existing definition.
;; c&p from define-grobs.scm
'grob-property gprop))
(define direction-polyphonic-grobs
- '(Tie Rest Slur Script TextScript Stem Dots DotColumn))
+ '(Stem Tie Rest Slur Script TextScript Dots DotColumn
+ ))
(define-public (make-voice-props-set n)
(make-sequential-music
(map (lambda (x) (make-grob-property-set x 'direction
(if (odd? n) -1 1)))
direction-polyphonic-grobs)
- (list (make-grob-property-set 'NoteColumn 'horizontal-shift (quotient n 2))
- (make-grob-property-set 'MultiMeasureRest 'staff-position
- (if (odd? n) -4 4))))))
+ (list
+ (make-grob-property-set 'NoteColumn 'horizontal-shift (quotient n 2))
+ (make-grob-property-set 'MultiMeasureRest 'staff-position (if (odd? n) -4 4))
+
+ ))))
+
(define-public (make-voice-props-revert)
(make-sequential-music