]> git.lyx.org Git - lyx.git/blobdiff - src/rowpainter.cpp
Fulfill promise to Andre: TextClass_ptr --> TextClassPtr.
[lyx.git] / src / rowpainter.cpp
index f85af08eef5f7d10b435bb0d001fcf03e67cfb71..4de25407e3332eef611a81f7e60420d767348fce 100644 (file)
@@ -123,7 +123,7 @@ void RowPainter::paintHfill(pos_type const pos, pos_type const body_pos)
 
 void RowPainter::paintInset(Inset const * inset, pos_type const pos)
 {
-       Font font = text_.getFont(pi_.base.bv->buffer(), par_, pos);
+       Font font = text_metrics_.getDisplayFont(pit_, pos);
 
        BOOST_ASSERT(inset);
        // FIXME: We should always use font, see documentation of
@@ -133,6 +133,7 @@ void RowPainter::paintInset(Inset const * inset, pos_type const pos)
                font;
        pi_.ltr_pos = (bidi_.level(pos) % 2 == 0);
        pi_.erased_ = erased_ || par_.isDeleted(pos);
+       pi_.base.bv->coordCache().insets().add(inset, int(x_), yo_);
        // insets are painted completely. Recursive
        inset->drawSelection(pi_, int(x_), yo_);
        inset->draw(pi_, int(x_), yo_);
@@ -194,7 +195,7 @@ void RowPainter::paintHebrewComposeChar(pos_type & vpos, Font const & font)
                if (!Encodings::isComposeChar_hebrew(c)) {
                        if (isPrintableNonspace(c)) {
                                int const width2 = pm_.singleWidth(i,
-                                       text_.getFont(pi_.base.bv->buffer(), par_, i));
+                                       text_metrics_.getDisplayFont(pit_, i));
                                dx = (c == 0x05e8 || // resh
                                      c == 0x05d3)   // dalet
                                        ? width2 - width
@@ -228,7 +229,7 @@ void RowPainter::paintArabicComposeChar(pos_type & vpos, Font const & font)
                if (!Encodings::isComposeChar_arabic(c)) {
                        if (isPrintableNonspace(c)) {
                                int const width2 = pm_.singleWidth(i,
-                                               text_.getFont(pi_.base.bv->buffer(), par_, i));
+                                               text_metrics_.getDisplayFont(pit_, i));
                                dx = (width2 - width) / 2;
                        }
                        break;
@@ -348,7 +349,7 @@ void RowPainter::paintForeignMark(double orig_x, Font const & font, int desc)
 void RowPainter::paintFromPos(pos_type & vpos)
 {
        pos_type const pos = bidi_.vis2log(vpos);
-       Font orig_font = text_.getFont(pi_.base.bv->buffer(), par_, pos);
+       Font orig_font = text_metrics_.getDisplayFont(pit_, pos);
        double const orig_x = x_;
 
        // usual characters, no insets
@@ -701,7 +702,6 @@ void RowPainter::paintText()
        // Use font span to speed things up, see below
        FontSpan font_span;
        Font font;
-       Buffer const & buffer = pi_.base.bv->buffer();
 
        // If the last logical character is a separator, don't paint it, unless
        // it's in the last row of a paragraph; see skipped_sep_vpos declaration
@@ -728,7 +728,7 @@ void RowPainter::paintText()
                // Use font span to speed things up, see above
                if (vpos < font_span.first || vpos > font_span.last) {
                        font_span = par_.fontSpan(vpos);
-                       font = text_.getFont(buffer, par_, vpos);
+                       font = text_metrics_.getDisplayFont(pit_, vpos);
                }
 
                const int width_pos = pm_.singleWidth(pos, font);
@@ -773,7 +773,7 @@ void RowPainter::paintText()
                        ++vpos;
 
                } else if (par_.isSeparator(pos)) {
-                       Font orig_font = text_.getFont(buffer, par_, pos);
+                       Font orig_font = text_metrics_.getDisplayFont(pit_, pos);
                        double const orig_x = x_;
                        x_ += width_pos;
                        if (pos >= body_pos)