aboutsummaryrefslogtreecommitdiff
path: root/src/wrap.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/wrap.c')
-rw-r--r--src/wrap.c28
1 files changed, 16 insertions, 12 deletions
diff --git a/src/wrap.c b/src/wrap.c
index 748857a..deee556 100644
--- a/src/wrap.c
+++ b/src/wrap.c
@@ -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;
}
-