]> git.lyx.org Git - lyx.git/blobdiff - src/BufferView.cpp
Transfer current_font and real_current_font from Text to Cursor.
[lyx.git] / src / BufferView.cpp
index f3d3590c5d27de125b14d967801c3f97d636242b..7fbd7187be614a96428e28cd8da0884345738d13 100644 (file)
@@ -134,7 +134,7 @@ BufferView::BufferView(Buffer & buf)
 
        cursor_.push(buffer_.inset());
        cursor_.resetAnchor();
-       buffer_.text().setCurrentFont(cursor_);
+       cursor_.setCurrentFont();
 
        if (graphics::Previews::status() != LyXRC::PREVIEW_OFF)
                graphics::Previews::get().generateBufferPreviews(buffer_);
@@ -344,7 +344,7 @@ void BufferView::scrollDocView(int value)
 
 void BufferView::setCursorFromScrollbar()
 {
-       Text & t = buffer_.text();
+       TextMetrics & tm = text_metrics_[&buffer_.text()];
 
        int const height = 2 * defaultRowHeight();
        int const first = height;
@@ -358,14 +358,14 @@ void BufferView::setCursorFromScrollbar()
                // We reset the cursor because bv_funcs::status() does not
                // work when the cursor is within mathed.
                cur.reset(buffer_.inset());
-               t.setCursorFromCoordinates(cur, 0, first);
+               tm.setCursorFromCoordinates(cur, 0, first);
                cur.clearSelection();
                break;
        case bv_funcs::CUR_BELOW:
                // We reset the cursor because bv_funcs::status() does not
                // work when the cursor is within mathed.
                cur.reset(buffer_.inset());
-               t.setCursorFromCoordinates(cur, 0, last);
+               tm.setCursorFromCoordinates(cur, 0, last);
                cur.clearSelection();
                break;
        case bv_funcs::CUR_INSIDE:
@@ -373,7 +373,7 @@ void BufferView::setCursorFromScrollbar()
                int const newy = min(last, max(y, first));
                if (y != newy) {
                        cur.reset(buffer_.inset());
-                       t.setCursorFromCoordinates(cur, 0, newy);
+                       tm.setCursorFromCoordinates(cur, 0, newy);
                }
        }
 }
@@ -457,7 +457,7 @@ bool BufferView::moveToPosition(pit_type bottom_pit, pos_type bottom_pos,
                // Note: only bottom (document) level pit is set.
                setCursor(doc_it);
                // set the current font.
-               buffer_.text().setCurrentFont(cursor_);
+               cursor_.setCurrentFont();
                // center the screen on this new position.
                center();
        }
@@ -469,7 +469,7 @@ bool BufferView::moveToPosition(pit_type bottom_pit, pos_type bottom_pos,
 void BufferView::translateAndInsert(char_type c, Text * t, Cursor & cur)
 {
        if (lyxrc.rtl_support) {
-               if (cursor_.innerText()->real_current_font.isRightToLeft()) {
+               if (cursor_.real_current_font.isRightToLeft()) {
                        if (intl_->keymap == Intl::PRIMARY)
                                intl_->keyMapSec();
                } else {
@@ -987,7 +987,7 @@ void BufferView::resize(int width, int height)
 
 Inset const * BufferView::getCoveringInset(Text const & text, int x, int y)
 {
-       pit_type pit = text.getPitNearY(*this, y);
+       pit_type pit = text_metrics_[&text].getPitNearY(y);
        BOOST_ASSERT(pit != -1);
        Paragraph const & par = text.getPar(pit);
 
@@ -1105,7 +1105,7 @@ bool BufferView::workAreaDispatch(FuncRequest const & cmd0)
        }
 
        // Build temporary cursor.
-       Inset * inset = buffer_.text().editXY(cur, cmd.x, cmd.y);
+       Inset * inset = text_metrics_[&buffer_.text()].editXY(cur, cmd.x, cmd.y);
 
        // Put anchor at the same position.
        cur.resetAnchor();
@@ -1550,16 +1550,18 @@ void BufferView::draw(frontend::Painter & pain)
        TextMetrics const & tm = text_metrics_[&text];
 
        if (select)
-               text.drawSelection(pi, 0, 0);
+               tm.drawSelection(pi, 0, 0);
 
        int yy = metrics_info_.y1;
        // draw contents
+       LYXERR(Debug::PAINTING) << "\t\t*** START DRAWING ***" << endl;
        for (pit_type pit = metrics_info_.p1; pit <= metrics_info_.p2; ++pit) {
                ParagraphMetrics const & pm = tm.parMetrics(pit);
                yy += pm.ascent();
                tm.drawParagraph(pi, pit, 0, yy);
                yy += pm.descent();
        }
+       LYXERR(Debug::PAINTING) << "\n\t\t*** END DRAWING  ***" << endl;
 
        // and grey out above (should not happen later)
 //     lyxerr << "par ascent: " << text.getPar(metrics_info_.p1).ascent() << endl;