X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FRowPainter.cpp;h=e378f433e8ebc6d09b8d3c3012f9fd861d365dc4;hb=eb0194081bd02a763b8c799b68f342ed81e14000;hp=a392c027fadc85c72ab8fab6df5fbac412686e68;hpb=b9e29418471d0d275650c52f976da300f4f42501;p=lyx.git diff --git a/src/RowPainter.cpp b/src/RowPainter.cpp index a392c027fa..e378f433e8 100644 --- a/src/RowPainter.cpp +++ b/src/RowPainter.cpp @@ -11,8 +11,6 @@ #include -#include - #include "RowPainter.h" #include "Buffer.h" @@ -39,6 +37,7 @@ #include "support/gettext.h" #include "support/lassert.h" +#include using namespace std; @@ -60,7 +59,8 @@ RowPainter::RowPainter(PainterInfo & pi, //lyxerr << "RowPainter: x: " << x_ << " xo: " << xo_ << " yo: " << yo_ << endl; //row_.dump(); - LBUFERR(row.pit() < text.paragraphs().size()); + LBUFERR(row.pit() >= 0); + LBUFERR(row.pit() < int(text.paragraphs().size())); } @@ -457,8 +457,16 @@ void RowPainter::paintTopLevelLabel() const double x = x_; if (layout.labeltype == LABEL_CENTERED) { - x += (tm_.width() - row_.left_margin - row_.right_margin) / 2; - x -= fm.width(str) / 2; + /* Currently, x points at row_.left_margin (which contains the + * indent). First remove that, and then center the title with + * respect to the left and right margins. + */ + int const leftm = row_.isRTL() ? tm_.rightMargin(row_.pit()) + : tm_.leftMargin(row_.pit()); + int const rightm = row_.isRTL() ? tm_.leftMargin(row_.pit()) + : tm_.rightMargin(row_.pit()); + x += leftm - row_.left_margin + (tm_.width() - leftm -rightm) / 2 + - fm.width(str) / 2; } else if (row_.isRTL()) { x = xo_ + tm_.width() - row_.right_margin - fm.width(str); }