- Grob *d = unsmob_grob (head_down->get_object ("dot"));
- Grob *parent = d->get_parent (X_AXIS);
-
- /*
- FIXME:
-
- |
- x . o
- |
-
-
- the . is put right of o which is erroneous o force-shifted
- far to the right.
- */
- if (Dot_column::has_interface (parent))
- {
- Grob *stem = unsmob_grob (head_up->get_object ("stem"));
- extract_grob_set (stem, "note-heads", heads);
- for (vsize i = 0; i < heads.size (); i++)
- Side_position_interface::add_support (parent, heads[i]);
- }
+ if (shift_amount < -1e-6
+ && Rhythmic_head::dot_count (head_up)
+ && !Rhythmic_head::dot_count (head_down))
+ {
+ Grob *d = unsmob_grob (head_up->get_object ("dot"));
+ Grob *parent = d->get_parent (X_AXIS);
+ if (Dot_column::has_interface (parent))
+ Side_position_interface::add_support (parent, head_down);
+ }
+ else if (Rhythmic_head::dot_count (head_down)
+ && !Rhythmic_head::dot_count (head_up))
+ {
+ Grob *d = unsmob_grob (head_down->get_object ("dot"));
+ Grob *parent = d->get_parent (X_AXIS);
+ if (Dot_column::has_interface (parent))
+ {
+ Grob *stem = unsmob_grob (head_up->get_object ("stem"));
+ extract_grob_set (stem, "note-heads", heads);
+ for (vsize i = 0; i < heads.size (); i++)
+ Side_position_interface::add_support (parent, heads[i]);
+ }
+ }