+ /*
+
+ */
+ if (full_collide
+ && down_ball_type * up_ball_type == 0)
+ {
+ if (up_ball_type == 0 && down_ball_type == 1)
+ shift_amount *= 1.25;
+ else if (up_ball_type == 0 && down_ball_type == 2)
+ shift_amount *= 1.35;
+ else if (down_ball_type == 0 && up_ball_type == 1)
+ shift_amount *= 0.7;
+ else if (down_ball_type == 0 && up_ball_type == 2)
+ shift_amount *= 0.75;
+ }
+
+ /*
+ * Fix issue #44:
+ *
+ * Dots from left note head collide with right note head. Only occurs
+ * with a close half collide, if the left note head is between
+ * lines and the right note head is on a line, and if right note head
+ * hasn't got any dots.
+ */
+ if (close_half_collide
+ && Rhythmic_head::dot_count (head_up)
+ && !Rhythmic_head::dot_count (head_down))
+ {
+ Grob *staff = Staff_symbol_referencer::get_staff_symbol (me);
+ if (!Staff_symbol_referencer::on_line (staff, ups[0]))
+ /*
+ TODO: consider junking the else body.
+ */
+ if (to_boolean (me->get_property ("prefer-dotted-right")))
+ {
+ shift_amount = 0.5;
+ }
+ else
+ {
+ 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);
+ }
+ }
+