X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FTextMetrics.cpp;h=d23c09d29bfacfe1ab6ef7533c3a8e24d79a3ede;hb=0a8ec32a3bbcefc5ce7d7772fec82b85ba58f2d1;hp=3b4e1ff5d0e41f23e42eaffd7bf1c0ef6a58359f;hpb=76f0a3dd4ee5c7958c6dea79628ef8c2ac2c59bd;p=lyx.git diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp index 3b4e1ff5d0..d23c09d29b 100644 --- a/src/TextMetrics.cpp +++ b/src/TextMetrics.cpp @@ -501,7 +501,7 @@ bool TextMetrics::redoParagraph(pit_type const pit) // Top and bottom margin of the document (only at top-level) if (text_->isMainText()) { // original value was 20px, which is 0.2in at 100dpi - int const margin = Length(0.2, Length::IN).inPixels(0); + int const margin = bv_->zoomedPixels(20); if (pit == 0) { pm.rows().front().dimension().asc += margin; /* coverity thinks that we should update pm.dim().asc @@ -862,7 +862,7 @@ bool TextMetrics::breakRow(Row & row, int const right_margin) const // or the end of the par, then build a representation of the row. pos_type i = pos; FontIterator fi = FontIterator(*this, par, row.pit(), pos); - while (i < end && row.width() <= width) { + while (i < end && (i == pos || row.width() <= width)) { char_type c = par.getChar(i); // The most special cases are handled first. if (par.isInset(i)) { @@ -1046,8 +1046,8 @@ int TextMetrics::parTopSpacing(pit_type const pit) const if (prev != pit_type(pars.size())) { asc += int(pars[prev].layout().parsep * dh); } else if (pit != 0) { - Paragraph const & prevpar = pars[pit - 1]; - if (prevpar.getDepth() != 0 || prevpar.layout() == layout) + Paragraph const & prevpar2 = pars[pit - 1]; + if (prevpar2.getDepth() != 0 || prevpar2.layout() == layout) asc += int(layout.parsep * dh); } @@ -1107,9 +1107,9 @@ void TextMetrics::setRowHeight(Row & row) const maxasc = max(maxasc, cit->dim.ascent()); maxdes = max(maxdes, cit->dim.descent()); } else { - FontMetrics const & fm = theFontMetrics(cit->font); - maxasc = max(maxasc, int(fm.maxAscent() * spacing_val)); - maxdes = max(maxdes, int(fm.maxDescent() * spacing_val)); + FontMetrics const & fm2 = theFontMetrics(cit->font); + maxasc = max(maxasc, int(fm2.maxAscent() * spacing_val)); + maxdes = max(maxdes, int(fm2.maxDescent() * spacing_val)); } } @@ -1295,9 +1295,9 @@ pit_type TextMetrics::getPitNearY(int y) LYXERR(Debug::DEBUG, "examining: pit: " << it->first << " y: " << it->second.position()); - ParagraphMetrics const & pm = par_metrics_[it->first]; + ParagraphMetrics const & pm2 = par_metrics_[it->first]; - if (it->first >= pit && int(it->second.position()) - int(pm.ascent()) <= y) { + if (it->first >= pit && int(it->second.position()) - int(pm2.ascent()) <= y) { pit = it->first; yy = it->second.position(); } @@ -1502,14 +1502,14 @@ int TextMetrics::cursorX(CursorSlice const & sl, int TextMetrics::cursorY(CursorSlice const & sl, bool boundary) const { //lyxerr << "TextMetrics::cursorY: boundary: " << boundary << endl; - ParagraphMetrics const & pm = par_metrics_[sl.pit()]; + ParagraphMetrics const & pm = parMetrics(sl.pit()); if (pm.rows().empty()) return 0; int h = 0; - h -= par_metrics_[0].rows()[0].ascent(); + h -= parMetrics(0).rows()[0].ascent(); for (pit_type pit = 0; pit < sl.pit(); ++pit) { - h += par_metrics_[pit].height(); + h += parMetrics(pit).height(); } int pos = sl.pos(); if (pos && boundary) @@ -1878,7 +1878,7 @@ void TextMetrics::drawParagraph(PainterInfo & pi, pit_type const pit, int const if (selection) row.setSelectionAndMargins(sel_beg_par, sel_end_par); else - row.setSelection(-1, -1); + row.clearSelectionAndMargins(); // The row knows nothing about the paragraph, so we have to check // whether this row is the first or last and update the margins. @@ -1891,8 +1891,7 @@ void TextMetrics::drawParagraph(PainterInfo & pi, pit_type const pit, int const // has row changed since last paint? bool row_has_changed = row.changed() - || bv_->hadHorizScrollOffset(text_, pit, row.pos()) - || bv_->needRepaint(text_, row); + || bv_->hadHorizScrollOffset(text_, pit, row.pos()); // Take this opportunity to spellcheck the row contents. if (row_has_changed && pi.do_spellcheck && lyxrc.spellcheck_continuously) {