- if (!d0 && !d1)
- {
- d0= UP;
- d1 = DOWN;
- }
- else if (!d0)
- d0 = - d1;
- else if (!d1)
- d1 = -d0;
-
- Note_column::translate_rests (rests[0],d0 *dy);
- Note_column::translate_rests (rests[1], d1 *dy);
+ Real diff =
+ (ordered_rests[DOWN].top ()->extent (common, Y_AXIS)[UP]
+ - ordered_rests[UP].top ()->extent (common, Y_AXIS)[DOWN]) /staff_space;
+
+ if (diff > 0)
+ {
+ int amount_down = (int) ceil (diff / 2);
+ diff -= amount_down;
+ Note_column::translate_rests (ordered_rests[DOWN].top (),
+ -2 * amount_down);
+ if (diff > 0)
+ Note_column::translate_rests (ordered_rests[UP].top (),
+ 2 * int (ceil (diff)));