diff options
Diffstat (limited to 'src/wrap.c')
-rw-r--r-- | src/wrap.c | 28 |
1 files changed, 16 insertions, 12 deletions
@@ -451,6 +451,18 @@ static enum wrap_box_space space(struct wrap_line *boxes, int i) } +static void distribute_spaces_last_line(struct wrap_line *l, double w, + double sp) +{ + int overfull = 0; + + for ( i=0; i<l->n_boxes-1; i++ ) { + l->boxes[i].sp = sp_x(l->boxes[i].space); + } + l->boxes[l->n_boxes-1].sp = 0.0; + l->overfull = overfull; +} + static void distribute_spaces(struct wrap_line *l, double w) { @@ -466,18 +478,11 @@ static void distribute_spaces(struct wrap_line *l, double w) sp = (pango_units_from_double(w)-total) / (l->n_boxes-1); - for ( i=0; i<l->n_boxes-1; i++ ) { - if ( sp < sp_zp(l->boxes[i].space) ) { - l->boxes[i].sp = sp_zp(l->boxes[i].space); - overfull = 1; - } else if ( l->last_line ) { - l->boxes[i].sp = sp_x(l->boxes[i].space); - } else { - l->boxes[i].sp = sp; - } + if ( l->last_line ) { + distribute_spaces_last_line(l, w, sp); + } else { + distribute_spaces_normal_line(l, w, sp); } - l->boxes[l->n_boxes-1].sp = 0.0; - l->overfull = overfull; } @@ -771,4 +776,3 @@ int wrap_contents(struct frame *fr, PangoContext *pc) return 0; } - |