Fix drawing of labels in insets

In many cases, the origin xo_ of insets was forgotten.

Also fix spacing between text and label in rtl

Fixes bug #11425.

(cherry picked from commit 5c1d65afee)
(cherry picked from commit 5fc035f99c)
This commit is contained in:
Jean-Marc Lasgouttes 2019-01-04 16:24:18 +01:00
parent 7f3407b89a
commit 3a4c4605e9

View File

@ -402,7 +402,7 @@ void RowPainter::paintLabel() const
double x = x_; double x = x_;
if (row_.isRTL()) if (row_.isRTL())
x = tm_.width() - row_.right_margin + fm.width(layout.labelsep); x = xo_ + row_.width() + fm.width(layout.labelsep);
else else
x = x_ - fm.width(layout.labelsep) - fm.width(str); x = x_ - fm.width(layout.labelsep) - fm.width(str);
@ -437,10 +437,10 @@ void RowPainter::paintTopLevelLabel() const
double x = x_; double x = x_;
if (layout.labeltype == LABEL_CENTERED) { if (layout.labeltype == LABEL_CENTERED) {
x = row_.left_margin + (tm_.width() - row_.left_margin - row_.right_margin) / 2; x += (tm_.width() - row_.left_margin - row_.right_margin) / 2;
x -= fm.width(str) / 2; x -= fm.width(str) / 2;
} else if (row_.isRTL()) { } else if (row_.isRTL()) {
x = tm_.width() - row_.right_margin - fm.width(str); x = xo_ + tm_.width() - row_.right_margin - fm.width(str);
} }
pi_.pain.text(int(x), yo_ - maxdesc - labeladdon, str, font); pi_.pain.text(int(x), yo_ - maxdesc - labeladdon, str, font);
} }
@ -525,9 +525,9 @@ void RowPainter::paintLast() const
} }
if (endlabel == END_LABEL_BOX) if (endlabel == END_LABEL_BOX)
pi_.pain.rectangle(x, y, size, size, Color_eolmarker); pi_.pain.rectangle(xo_ + x, y, size, size, Color_eolmarker);
else else
pi_.pain.fillRectangle(x, y, size, size, Color_eolmarker); pi_.pain.fillRectangle(xo_ + x, y, size, size, Color_eolmarker);
break; break;
} }