then kill the dots too.
* lily/system.cc (output_lines): only junk only-prebreak-interface grobs.
* lily/system.cc (output_lines): don't suicide Spacing_items.
* lily/dot-column.cc (dot_config_badness): new function:
select the best scoring dot configuration: dots should go close to
the note heads, but be shifted up or down according to conventions.
(print_dot_configuration): idem.
(shift_one): idem
(remove_collision): idem.
2004-01-06 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ * lily/note-collision.cc (check_meshing_chords): if merging heads,
+ then kill the dots too.
+
* lily/separating-line-group-engraver.cc (acknowledge_grob):
set/unset breakableSeparationItem
PACKAGE_NAME=LilyPond
MAJOR_VERSION=2
MINOR_VERSION=1
-PATCH_LEVEL=6
-MY_PATCH_LEVEL=hwn1
+PATCH_LEVEL=7
+MY_PATCH_LEVEL=
SCM
Dot_column::do_shifts (Grob*me)
{
-
Link_array<Grob> dots =
Pointer_group_interface__extract_grobs (me, (Grob*)0, "dots");
dots.sort (compare_position);
-
+ for (int i = dots.size (); i--;)
+ if (!dots[i]->live ())
+ dots.del (i);
+
Dot_configuration cfg;
for (int i =0;i < dots.size (); i++)
{
if (wipe_ball && wipe_ball->live ())
{
wipe_ball->set_grob_property ("transparent", SCM_BOOL_T);
- wipe_ball->set_grob_property ("molecule", SCM_EOL);
+ wipe_ball->set_grob_property ("molecule", SCM_EOL);
+
+ if (Grob *d = unsmob_grob (wipe_ball->get_grob_property ("dot")))
+ d->suicide ();
+ }
+
+ if (wipe_ball == 0
+ && unsmob_grob (nd->get_grob_property ("dot")))
+ {
+ unsmob_grob (nd->get_grob_property ("dot"))->suicide ();
}
}
else if (close_half_collide && !touch)
gh_pair_p (s); s = ly_cdr (s))
{
Grob * g = unsmob_grob (ly_car (s));
- if (g->internal_has_interface ("only-prebreak-interface"))
+ if (g->internal_has_interface (ly_symbol2scm ("only-prebreak-interface")))
{
/*
Kill no longer needed grobs.