void RowPainter::paintInset(Row::Element const & e) const
{
- // Handle selection
+ // Handle selection (first left/right, then middle).
+ pi_.selected_left = pi_.selected
+ || (row_.isRTL() ? row_.end_margin_sel : row_.begin_margin_sel);
+ pi_.selected_right = pi_.selected
+ || (row_.isRTL() ? row_.begin_margin_sel : row_.end_margin_sel);
bool const pi_selected = pi_.selected;
Cursor const & cur = pi_.base.bv->cursor();
if (cur.selection() && cur.text() == &text_
void RowPainter::paintChangeBar() const
{
- pi_.pain.fillRectangle(5, yo_ - row_.ascent(), 3, row_.height(), Color_changebar);
+ int const x = pi_.base.bv->leftMargin() - pi_.base.bv->zoomedPixels(7);
+ Dimension const & cdim = row_.contents_dim();
+ pi_.pain.fillRectangle(x, yo_ - cdim.ascent(),
+ 3, cdim.height(), Color_changebar);
}
void RowPainter::paintTooLargeMarks(bool const left, bool const right) const
{
- if (left)
- pi_.pain.line(pi_.base.dottedLineThickness(), yo_ - row_.ascent(),
- pi_.base.dottedLineThickness(), yo_ + row_.descent(),
- Color_scroll, Painter::line_onoffdash,
- pi_.base.dottedLineThickness());
+ int const lwid = pi_.base.dottedLineThickness();
+ Dimension const & cdim = row_.contents_dim();
+ if (left) {
+ int const x = pi_.base.bv->leftMargin() - lwid;
+ pi_.pain.line(x, yo_ - cdim.ascent(), x, yo_ + cdim.descent(),
+ Color_scroll, Painter::line_onoffdash, lwid);
+ }
if (right) {
- int const wwidth =
- pi_.base.bv->workWidth() - pi_.base.dottedLineThickness();
- pi_.pain.line(wwidth, yo_ - row_.ascent(),
- wwidth, yo_ + row_.descent(),
- Color_scroll, Painter::line_onoffdash,
- pi_.base.dottedLineThickness());
+ int const x = pi_.base.bv->workWidth() - pi_.base.bv->rightMargin();
+ pi_.pain.line(x, yo_ - cdim.ascent(), x, yo_ + cdim.descent(),
+ Color_scroll, Painter::line_onoffdash, lwid);
}
}
void RowPainter::paintBookmark(int num) const
{
- int const x = row_.isRTL()
- ? pi_.base.bv->workWidth() - pi_.base.bv->rightMargin() : 0;
- FontInfo fi = pi_.base.bv->buffer().params().getFont().fontInfo();
+ BufferView const * bv = pi_.base.bv;
+ FontInfo fi = bv->buffer().params().getFont().fontInfo();
+ FontMetrics const & fm = theFontMetrics(fi);
fi.setColor(Color_bookmark);
// ❶ U+2776 DINGBAT NEGATIVE CIRCLED DIGIT ONE
char_type const ch = 0x2775 + num;
+ int const x = row_.isRTL()
+ ? bv->workWidth() - bv->rightMargin() + (bv->defaultMargin() - fm.width(ch)) / 2
+ : bv->leftMargin() - (bv->defaultMargin() + fm.width(ch)) / 2;
pi_.pain.text(x, yo_, ch, fi);
}