]> git.lyx.org Git - lyx.git/blobdiff - src/BufferView.cpp
Cmake export tests: Handle attic files with now missing references to png graphics
[lyx.git] / src / BufferView.cpp
index 762fe78ec9bd6128d8f8f495beb65f81c5ee46e0..06ea9ea6c964e9a73afda6a8e75cad07e82d44a0 100644 (file)
@@ -433,7 +433,7 @@ bool BufferView::needsFitCursor() const
 void BufferView::processUpdateFlags(Update::flags flags)
 {
        // This is close to a hot-path.
-       LYXERR(Debug::DEBUG, "BufferView::processUpdateFlags()"
+       LYXERR(Debug::PAINTING, "BufferView::processUpdateFlags()"
                << "[fitcursor = " << (flags & Update::FitCursor)
                << ", forceupdate = " << (flags & Update::Force)
                << ", singlepar = " << (flags & Update::SinglePar)
@@ -1124,16 +1124,6 @@ bool BufferView::getStatus(FuncRequest const & cmd, FuncStatus & flag)
                    || getInsetByCode<InsetRef>(cur, REF_CODE));
                break;
 
-       case LFUN_CHANGES_TRACK:
-               flag.setEnabled(true);
-               flag.setOnOff(buffer_.params().track_changes);
-               break;
-
-       case LFUN_CHANGES_OUTPUT:
-               flag.setEnabled(true);
-               flag.setOnOff(buffer_.params().output_changes);
-               break;
-
        case LFUN_CHANGES_MERGE:
        case LFUN_CHANGE_NEXT:
        case LFUN_CHANGE_PREVIOUS:
@@ -1146,16 +1136,6 @@ bool BufferView::getStatus(FuncRequest const & cmd, FuncStatus & flag)
                flag.setEnabled(true);
                break;
 
-       case LFUN_BUFFER_TOGGLE_COMPRESSION: {
-               flag.setOnOff(buffer_.params().compressed);
-               break;
-       }
-
-       case LFUN_BUFFER_TOGGLE_OUTPUT_SYNC: {
-               flag.setOnOff(buffer_.params().output_sync);
-               break;
-       }
-
        case LFUN_SCREEN_UP:
        case LFUN_SCREEN_DOWN:
        case LFUN_SCROLL:
@@ -1458,33 +1438,6 @@ void BufferView::dispatch(FuncRequest const & cmd, DispatchResult & dr)
                break;
        }
 
-       case LFUN_CHANGES_TRACK:
-               buffer_.params().track_changes = !buffer_.params().track_changes;
-               break;
-
-       case LFUN_CHANGES_OUTPUT:
-               buffer_.params().output_changes = !buffer_.params().output_changes;
-               if (buffer_.params().output_changes) {
-                       bool dvipost    = LaTeXFeatures::isAvailable("dvipost");
-                       bool xcolorulem = LaTeXFeatures::isAvailable("ulem") &&
-                                         LaTeXFeatures::isAvailable("xcolor");
-
-                       if (!dvipost && !xcolorulem) {
-                               Alert::warning(_("Changes not shown in LaTeX output"),
-                                              _("Changes will not be highlighted in LaTeX output, "
-                                                "because neither dvipost nor xcolor/ulem are installed.\n"
-                                                "Please install these packages or redefine "
-                                                "\\lyxadded and \\lyxdeleted in the LaTeX preamble."));
-                       } else if (!xcolorulem) {
-                               Alert::warning(_("Changes not shown in LaTeX output"),
-                                              _("Changes will not be highlighted in LaTeX output "
-                                                "when using pdflatex, because xcolor and ulem are not installed.\n"
-                                                "Please install both packages or redefine "
-                                                "\\lyxadded and \\lyxdeleted in the LaTeX preamble."));
-                       }
-               }
-               break;
-
        case LFUN_CHANGE_NEXT:
                findNextChange(this);
                // FIXME: Move this LFUN to Buffer so that we don't have to do this:
@@ -1724,15 +1677,6 @@ void BufferView::dispatch(FuncRequest const & cmd, DispatchResult & dr)
        }
                break;
 
-       case LFUN_BUFFER_TOGGLE_COMPRESSION:
-               // turn compression on/off
-               buffer_.params().compressed = !buffer_.params().compressed;
-               break;
-
-       case LFUN_BUFFER_TOGGLE_OUTPUT_SYNC:
-               buffer_.params().output_sync = !buffer_.params().output_sync;
-               break;
-
        case LFUN_SCREEN_UP:
        case LFUN_SCREEN_DOWN: {
                Point p = getPos(cur);
@@ -3005,13 +2949,9 @@ void BufferView::checkCursorScrollOffset(PainterInfo & pi)
        // Set the row on which the cursor lives.
        setCurrentRowSlice(rowSlice);
 
-       // Current x position of the cursor in pixels
-       int cur_x = getPos(d->cursor_).x_;
-
-       // If cursor offset is left margin and offset is not the leftmost
-       // position of the row, there is a cache problem.
-       if (cur_x == row.left_margin && !row.empty()
-           && d->cursor_.pos() != row.front().left_pos()) {
+       // If insets referred to by cursor are not all in the cache, the positions
+       // need to be recomputed.
+       if (!d->cursor_.inCoordCache()) {
                /** FIXME: the code below adds an extraneous computation of
                 * inset positions, and can therefore be bad for performance
                 * (think for example about a very large tabular inset.
@@ -3026,7 +2966,8 @@ void BufferView::checkCursorScrollOffset(PainterInfo & pi)
                 * cache. This would not happen if we did not have two-stage
                 * drawing.
                 *
-                * A proper fix should be found and this code should be removed.
+                * A proper fix would be to always have proper inset positions
+                * at this point.
                 */
                // Force the recomputation of inset positions
                bool const drawing = pi.pain.isDrawingEnabled();
@@ -3036,16 +2977,16 @@ void BufferView::checkCursorScrollOffset(PainterInfo & pi)
                              -d->horiz_scroll_offset_, 0);
                rp.paintText();
                pi.pain.setDrawingEnabled(drawing);
-
-               // Recompute current Current x position of the cursor in pixels
-               cur_x = getPos(d->cursor_).x_;
        }
 
+       // Current x position of the cursor in pixels
+       int cur_x = getPos(d->cursor_).x_;
+
        // Horizontal scroll offset of the cursor row in pixels
        int offset = d->horiz_scroll_offset_;
        int const MARGIN = 2 * theFontMetrics(d->cursor_.real_current_font).em()
                           + row.right_margin;
-       if (row.width() <= workWidth() - row.right_margin) {
+       if (row.right_x() <= workWidth() - row.right_margin) {
                // Row is narrower than the work area, no offset needed.
                offset = 0;
        } else {
@@ -3059,8 +3000,8 @@ void BufferView::checkCursorScrollOffset(PainterInfo & pi)
                // Correct the offset to make sure that we do not scroll too much
                if (offset < 0)
                        offset = 0;
-               if (row.width() - offset < workWidth() - row.right_margin)
-                       offset = row.width() - workWidth() + row.right_margin;
+               if (row.right_x() - offset < workWidth() - row.right_margin)
+                       offset = row.right_x() - workWidth() + row.right_margin;
        }
 
        //lyxerr << "cur_x=" << cur_x << ", offset=" << offset << ", row.wid=" << row.width() << ", margin=" << MARGIN << endl;