mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-22 10:00:33 +00:00
Aesthetics: off-by-one in line drawing
It is a general problem when doing graphics to know where a line begins and where it ends pixel-wise. At the instigation of Scott, and with the use of the kmag magnifier, this commit corrects 3 areas: * foreign marks were larger than the row element they were supposed to mark. This could lead to moving lines, depending on paint ordering. * visible spaces were drawn outside of their box (select a single space to see this). * the `L' blinking caret would leave a cursor dropping because the horizontal part was too wide.
This commit is contained in:
parent
022228e56f
commit
ad954a32a5
@ -159,7 +159,7 @@ void RowPainter::paintForeignMark(Row::Element const & e) const
|
|||||||
int const desc = e.inset ? e.dim.descent() : 0;
|
int const desc = e.inset ? e.dim.descent() : 0;
|
||||||
int const y = yo_ + min(3 * pi_.base.solidLineOffset() / 2 + desc,
|
int const y = yo_ + min(3 * pi_.base.solidLineOffset() / 2 + desc,
|
||||||
row_.descent() - 1);
|
row_.descent() - 1);
|
||||||
pi_.pain.line(int(x_), y, int(x_ + e.full_width()), y, Color_language,
|
pi_.pain.line(int(x_), y, int(x_ + e.full_width() - 1), y, Color_language,
|
||||||
Painter::line_solid, pi_.base.solidLineThickness());
|
Painter::line_solid, pi_.base.solidLineThickness());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -150,9 +150,9 @@ public:
|
|||||||
painter.setPen(color_);
|
painter.setPen(color_);
|
||||||
if (l_shape_) {
|
if (l_shape_) {
|
||||||
if (rtl_)
|
if (rtl_)
|
||||||
painter.drawLine(x_, bot, x_ - l, bot);
|
painter.drawLine(x_, bot, x_ - l + 1, bot);
|
||||||
else
|
else
|
||||||
painter.drawLine(x_, bot, x_ + caret_width_ + r, bot);
|
painter.drawLine(x_, bot, x_ + caret_width_ + r - 1, bot);
|
||||||
}
|
}
|
||||||
|
|
||||||
// draw completion triangle
|
// draw completion triangle
|
||||||
|
@ -355,18 +355,18 @@ void InsetSpace::draw(PainterInfo & pi, int x, int y) const
|
|||||||
int const h = theFontMetrics(pi.base.font).xHeight();
|
int const h = theFontMetrics(pi.base.font).xHeight();
|
||||||
int xp[4], yp[4];
|
int xp[4], yp[4];
|
||||||
|
|
||||||
xp[0] = x;
|
xp[0] = x + 1;
|
||||||
yp[0] = y - max(h / 4, 1);
|
yp[0] = y - max(h / 4, 1);
|
||||||
if (params_.kind == InsetSpaceParams::NORMAL ||
|
if (params_.kind == InsetSpaceParams::NORMAL ||
|
||||||
params_.kind == InsetSpaceParams::PROTECTED ||
|
params_.kind == InsetSpaceParams::PROTECTED ||
|
||||||
params_.kind == InsetSpaceParams::VISIBLE) {
|
params_.kind == InsetSpaceParams::VISIBLE) {
|
||||||
xp[1] = x; yp[1] = y;
|
xp[1] = x + 1; yp[1] = y;
|
||||||
xp[2] = x + w; yp[2] = y;
|
xp[2] = x + w - 2; yp[2] = y;
|
||||||
} else {
|
} else {
|
||||||
xp[1] = x; yp[1] = y + max(h / 4, 1);
|
xp[1] = x + 1; yp[1] = y + max(h / 4, 1);
|
||||||
xp[2] = x + w; yp[2] = y + max(h / 4, 1);
|
xp[2] = x + w - 2; yp[2] = y + max(h / 4, 1);
|
||||||
}
|
}
|
||||||
xp[3] = x + w;
|
xp[3] = x + w - 2;
|
||||||
yp[3] = y - max(h / 4, 1);
|
yp[3] = y - max(h / 4, 1);
|
||||||
|
|
||||||
Color col = Color_special;
|
Color col = Color_special;
|
||||||
|
Loading…
Reference in New Issue
Block a user