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;
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;
}
: 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)
{}
}
-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();
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
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;
}
}
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
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;
}