// The real stopping condition is a few lines below.
while (true) {
// Firstly, check whether there is a bookmark here.
- for (auto const & bp_p : bpl)
- if (bp_p.second == i) {
- Font f = *fi;
- f.fontInfo().setColor(Color_bookmark);
- // ❶ U+2776 DINGBAT NEGATIVE CIRCLED DIGIT ONE
- char_type const ch = 0x2775 + bp_p.first;
- row.addVirtual(i, docstring(1, ch), f, Change());
- }
+ if (lyxrc.bookmarks_visibility == LyXRC::BMK_INLINE)
+ for (auto const & bp_p : bpl)
+ if (bp_p.second == i) {
+ Font f = *fi;
+ f.fontInfo().setColor(Color_bookmark);
+ // ❶ U+2776 DINGBAT NEGATIVE CIRCLED DIGIT ONE
+ char_type const ch = 0x2775 + bp_p.first;
+ row.addVirtual(i, docstring(1, ch), f, Change());
+ }
// The stopping condition is here so that the display of a
// bookmark can take place at paragraph start too.
int TextMetrics::leftMargin(pit_type pit) const
{
- // the + 1 is useful when the paragraph is empty
- return leftMargin(pit, text_->paragraphs()[pit].size() + 1);
+ // FIXME: what is the semantics? It depends on whether the
+ // paragraph is empty!
+ return leftMargin(pit, text_->paragraphs()[pit].size());
}
Paragraph const & par = pars[pit];
LASSERT(pos >= 0, return 0);
// We do not really care whether pos > par.size(), since we do not
- // access the data. It can be actially useful, when querying the
+ // access the data. It can be actually useful, when querying the
// margin without indentation (see leftMargin(pit_type).
Buffer const & buffer = bv_->buffer();
if (text_->isRTL(pit))
swap(pi.leftx, pi.rightx);
+ BookmarksSection::BookmarkPosList bpl =
+ theSession().bookmarks().bookmarksInPar(bv_->buffer().fileName(), pm.par().id());
+
for (size_t i = 0; i != nrows; ++i) {
Row const & row = pm.rows()[i];
// Paint only the insets if the text itself is
// unchanged.
rp.paintOnlyInsets();
+ rp.paintTooLargeMarks(
+ row_x + row.left_x() < bv_->leftMargin(),
+ row_x + row.right_x() > bv_->workWidth() - bv_->rightMargin());
row.changed(false);
y += row.descent();
continue;
if (i == nrows - 1)
rp.paintLast();
rp.paintText();
- rp.paintTooLargeMarks(row_x + row.left_x() < 0,
- row_x + row.right_x() > bv_->workWidth());
+ rp.paintTooLargeMarks(
+ row_x + row.left_x() < bv_->leftMargin(),
+ row_x + row.right_x() > bv_->workWidth() - bv_->rightMargin());
+ // indicate bookmarks presence in margin
+ if (lyxrc.bookmarks_visibility == LyXRC::BMK_MARGIN)
+ for (auto const & bp_p : bpl)
+ if (bp_p.second >= row.pos() && bp_p.second < row.endpos())
+ rp.paintBookmark(bp_p.first);
+
y += row.descent();
#if 0