]> git.lyx.org Git - lyx.git/blobdiff - src/Row.cpp
unique_ptr and make_unique
[lyx.git] / src / Row.cpp
index 2bfe55a1b80d46d00b1aad0fbd6253d9910a4e74..58a23805f2ff35491df7fe56d265fcda40e85b52 100644 (file)
@@ -66,8 +66,7 @@ double Row::Element::pos2x(pos_type const i) const
 
        double w = 0;
        //handle first the two bounds of the element
-       if (i == endpos && type != VIRTUAL
-               && !(inset && inset->lyxCode() == SEPARATOR_CODE))
+       if (i == endpos && type != VIRTUAL)
                w = isRTL() ? 0 : full_width();
        else if (i == pos || type != STRING)
                w = isRTL() ? full_width() : 0;
@@ -129,17 +128,6 @@ bool Row::Element::breakAt(int w, bool force)
                return true;
        }
 
-       // Qt will not break at a leading space, and we need that sometimes, see
-       //   http://www.lyx.org/trac/ticket/9921.
-       // It would be nice to fix this properly, but for now do it by hand.
-       // FIXME: figure out what to do for RtL text.
-       if (!isRTL() && !str.empty() && str[0] == ' ') {
-               dim.wid = 0;
-               str = ' ';
-               endpos = pos + 1;
-               return true;
-       }
-
        return false;
 }
 
@@ -160,7 +148,8 @@ Row::Row()
        : separator(0), label_hfill(0), left_margin(0), right_margin(0),
          sel_beg(-1), sel_end(-1),
          begin_margin_sel(false), end_margin_sel(false),
-         changed_(false), crc_(0), pos_(0), end_(0), right_boundary_(false)
+         changed_(false), crc_(0),
+         pit_(0), pos_(0), end_(0), right_boundary_(false)
 {}
 
 
@@ -424,10 +413,10 @@ void Row::pop_back()
 }
 
 
-void Row::shortenIfNeeded(pos_type const keep, int const w)
+bool Row::shortenIfNeeded(pos_type const keep, int const w)
 {
        if (empty() || width() <= w)
-               return;
+               return false;
 
        Elements::iterator const beg = elements_.begin();
        Elements::iterator const end = elements_.end();
@@ -444,7 +433,7 @@ void Row::shortenIfNeeded(pos_type const keep, int const w)
        if (cit == end) {
                // This should not happen since the row is too long.
                LYXERR0("Something is wrong cannot shorten row: " << *this);
-               return;
+               return false;
        }
 
        // Iterate backwards over breakable elements and try to break them
@@ -487,7 +476,7 @@ void Row::shortenIfNeeded(pos_type const keep, int const w)
                        dim_.wid = wid_brk + brk.dim.wid;
                        // If there are other elements, they should be removed.
                        elements_.erase(cit_brk + 1, end);
-                       return;
+                       return true;
                }
        }
 
@@ -504,7 +493,7 @@ void Row::shortenIfNeeded(pos_type const keep, int const w)
                end_ = cit->pos;
                dim_.wid = wid;
                elements_.erase(cit, end);
-               return;
+               return true;
        }
 
        /* If we are here, it means that we have not found a separator to
@@ -519,7 +508,9 @@ void Row::shortenIfNeeded(pos_type const keep, int const w)
                dim_.wid = wid + cit->dim.wid;
                // If there are other elements, they should be removed.
                elements_.erase(next(cit, 1), end);
+               return true;
        }
+       return false;
 }