+bool Paragraph::hfillExpansion(Row const & row, pos_type pos) const
+{
+ if (!isHfill(pos))
+ return false;
+
+ // at the end of a row it does not count
+ // unless another hfill exists on the line
+ if (pos >= row.endpos()) {
+ for (pos_type i = row.pos(); i < pos && !isHfill(i); ++i)
+ return false;
+ }
+
+ // at the beginning of a row it does not count, if it is not
+ // the first row of a paragaph
+ if (row.pos() == 0)
+ return true;
+
+ // in some labels it does not count
+ if (layout()->margintype != MARGIN_MANUAL && pos < beginOfBody())
+ return false;
+
+ // if there is anything between the first char of the row and
+ // the specified position that is not a newline and not a hfill,
+ // the hfill will count, otherwise not
+ pos_type i = row.pos();
+ while (i < pos && (isNewline(i) || isHfill(i)))
+ ++i;
+
+ return i != pos;
+}
+
+