+ *fixed
+ = (left_head_wid.is_empty () ? increment
+ : /*
+ Size of the head:
+ */
+ (left_head_wid[RIGHT]+
+
+ /*
+ What's sticking out of the head, eg. a flag:
+ */
+ (extents[LEFT][RIGHT] - left_head_wid[RIGHT]) / 2))
+
+ /*
+ What is sticking out on the left side of the right note:
+ */
+ + (extents[RIGHT].is_empty ()
+ ? 0.0
+ : ((- extents[RIGHT][LEFT] / 2)
+
+ /*
+ Add that which sticks out a lot.
+ */
+ + max (0.0, -extents[RIGHT][LEFT] - (base_space - increment))));
+
+ /*
+ We don't do complicated stuff: (base_space - increment) is the
+ normal amount of white, which also determines the amount of
+ stretch. Upon (extreme) stretching, notes with accidentals should
+ stretch as much as notes without accidentals.
+ */
+ *space = (base_space - increment) + *fixed;
+
+#if 0
+ /*
+ The below situation is now handled by the "sticks out a lot" case
+ above. However we keep around the code for a few releases before
+ we drop it.
+ */
+ if (!extents[RIGHT].is_empty ()
+ && (Item::is_breakable (right_col)
+ || right_col->original ()))
+ {
+ /*
+ This is for the situation
+
+ rest | 3/4 (eol)
+
+ Since we only take half of the right-object space above, the
+ barline will bump into the notes preceding it, if the right
+ thing is big. We add the rest of the extents here:
+ */
+
+ *space += -extents[RIGHT][LEFT] / 2;
+ *fixed += -extents[RIGHT][LEFT] / 2;
+ }
+#endif
+
+ stem_dir_correction (me, right_col, increment, space, fixed);