commit 7cc4ceb89c184e51c4dc575b7a5c2928469b3f14
Author: Jean-Marc Lasgouttes <lasgout...@lyx.org>
Date:   Thu May 23 10:26:08 2019 +0200

    Fixup da2696cc: do not clear useful information from row
    
    Ensure before calling breakRow that the row is empty.
    
    Remove Row::clear(), which has unnatural semantics.
    
    Fixes bug #11396.
---
 src/Row.h           |    2 --
 src/TextMetrics.cpp |    5 +++--
 2 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/src/Row.h b/src/Row.h
index e4a8e68..d210174 100644
--- a/src/Row.h
+++ b/src/Row.h
@@ -261,8 +261,6 @@ public:
        Element const & back() const { return elements_.back(); }
        /// remove last element
        void pop_back();
-       /// remove all row elements
-       void clear() { *this = Row(); }
        /**
         * if row width is too large, remove all elements after last
         * separator and update endpos if necessary. If all that
diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp
index 6f195a6..fc610ad 100644
--- a/src/TextMetrics.cpp
+++ b/src/TextMetrics.cpp
@@ -524,10 +524,11 @@ bool TextMetrics::redoParagraph(pit_type const pit, bool 
const align_rows)
        do {
                if (row_index == pm.rows().size())
                        pm.rows().push_back(Row());
+               else
+                       pm.rows()[row_index] = Row();
                Row & row = pm.rows()[row_index];
                row.pit(pit);
                row.pos(first);
-               row.pit(pit);
                need_new_row = breakRow(row, right_margin);
                setRowHeight(row);
                row.changed(true);
@@ -881,6 +882,7 @@ private:
  */
 bool TextMetrics::breakRow(Row & row, int const right_margin) const
 {
+       LATTEST(row.empty());
        Paragraph const & par = text_->getPar(row.pit());
        pos_type const end = par.size();
        pos_type const pos = row.pos();
@@ -888,7 +890,6 @@ bool TextMetrics::breakRow(Row & row, int const 
right_margin) const
        bool const is_rtl = text_->isRTL(row.pit());
        bool need_new_row = false;
 
-       row.clear();
        row.left_margin = leftMargin(row.pit(), pos);
        row.right_margin = right_margin;
        if (is_rtl)

Reply via email to