]> git.lyx.org Git - features.git/commitdiff
Revert last three commits.
authorRichard Kimberly Heck <rikiheck@lyx.org>
Sun, 26 Apr 2020 07:08:35 +0000 (03:08 -0400)
committerJean-Marc Lasgouttes <lasgouttes@lyx.org>
Thu, 18 Jun 2020 13:48:57 +0000 (15:48 +0200)
There are other issues here. The big one is in TextMetrics::getPitNearY,
where -1 is used as a 'special' return value for pit.

src/BufferView.cpp
src/Compare.cpp
src/RowPainter.cpp
src/support/lstrings.cpp
src/support/lstrings.h
src/support/types.h

index ca59fcb4db9f3c0878bd43641b614a181c4fe22a..621b58ef26fc74fdeeb6b0242bc39ab92c61e9f7 100644 (file)
@@ -2860,7 +2860,7 @@ void BufferView::updateMetrics(Update::flags & update_flags)
        int y1 = d->anchor_ypos_ - anchor_pm.ascent();
        // We are now just above the anchor paragraph.
        pit_type pit1 = d->anchor_pit_ - 1;
-       while (y1 >= 0) {
+       for (; pit1 >= 0 && y1 >= 0; --pit1) {
                tm.redoParagraph(pit1);
                ParagraphMetrics & pm = tm.par_metrics_[pit1];
                y1 -= pm.descent();
@@ -2868,9 +2868,6 @@ void BufferView::updateMetrics(Update::flags & update_flags)
                pm.setPosition(y1);
                tm.updatePosCache(pit1);
                y1 -= pm.ascent();
-               if (pit1 == 0)
-                       break;
-               --pit1;
        }
 
        // Redo paragraphs below the anchor if necessary.
index 931fe76fafe2ea81091d38e848bb469ae32c2f16..60a0b65bb14538d630ceda87873543b406b6d973 100644 (file)
@@ -881,10 +881,10 @@ void Compare::Impl::writeToDestBuffer(DocRange const & range,
 
 void Compare::Impl::writeToDestBuffer(ParagraphList const & pars) const
 {
+       pit_type const pit = dest_pars_->size() - 1;
        dest_pars_->insert(dest_pars_->end(), pars.begin(), pars.end());
-       pit_type pit = dest_pars_->size();
-       if (pit > 0)
-               mergeParagraph(dest_buf_->params(), *dest_pars_, pit - 1);
+       if (pit >= 0)
+               mergeParagraph(dest_buf_->params(), *dest_pars_, pit);
 }
 
 
index a392c027fadc85c72ab8fab6df5fbac412686e68..6e4cf31ac10eed23dd7016d30067091ec4fd27b1 100644 (file)
@@ -60,7 +60,8 @@ RowPainter::RowPainter(PainterInfo & pi,
        //lyxerr << "RowPainter: x: " << x_ << " xo: " << xo_ << " yo: " << yo_ << endl;
        //row_.dump();
 
-       LBUFERR(row.pit() < text.paragraphs().size());
+       LBUFERR(row.pit() >= 0);
+       LBUFERR(row.pit() < int(text.paragraphs().size()));
 }
 
 
index 8c15d9bf0998665ae66f4f84e1bd60cb32b203a1..55e66ce077f717ab3ba71a343a1ff15e54e0848b 100644 (file)
@@ -1507,14 +1507,6 @@ docstring bformat(docstring const & fmt, unsigned int arg1)
 }
 
 
-docstring bformat(docstring const & fmt, pit_type arg1)
-{
-       LATTEST(contains(fmt, from_ascii("%1$d")));
-       docstring const str = subst(fmt, from_ascii("%1$d"), convert<docstring>(arg1));
-       return subst(str, from_ascii("%%"), from_ascii("%"));
-}
-
-
 docstring bformat(docstring const & fmt, docstring const & arg1)
 {
        LATTEST(contains(fmt, from_ascii("%1$s")));
index 0662769711510df28da58766ef2d6a9a7c01ceb7..f661fc5b85abc1e635348b6a484e5944fe1a2b65 100644 (file)
@@ -17,7 +17,6 @@
 #define LSTRINGS_H
 
 #include "support/docstring.h"
-#include "support/types.h"
 
 #include <vector>
 
@@ -370,7 +369,6 @@ docstring bformat(docstring const & fmt, long arg1);
 docstring bformat(docstring const & fmt, long long arg1);
 #endif
 docstring bformat(docstring const & fmt, unsigned int arg1);
-docstring bformat(docstring const & fmt, pit_type arg1);
 docstring bformat(docstring const & fmt, docstring const & arg1);
 docstring bformat(docstring const & fmt, char * arg1);
 docstring bformat(docstring const & fmt, docstring const & arg1, docstring const & arg2);
index 75ccec0fe276eddc631f774250eb80b5304d830c..c9cf349592d5ee61c58961f744ab631cbd965849 100644 (file)
@@ -40,7 +40,7 @@ namespace lyx {
         */
        // FIXME: should be unsigned as well.
        // however, simply changing it breaks a downward loop somewhere...
-       typedef size_t     pit_type;
+       typedef ptrdiff_t  pit_type;
 
        /// a type for the nesting depth of a paragraph
        typedef size_t     depth_type;