namespace lyx {
-DocIterator::DocIterator()
- : boundary_(false), inset_(nullptr), buffer_(nullptr)
-{}
-
-
-// We could be able to get rid of this if only every BufferView were
-// associated to a buffer on construction.
-DocIterator::DocIterator(Buffer * buf)
- : boundary_(false), inset_(nullptr), buffer_(buf)
-{}
-
-
-DocIterator::DocIterator(Buffer * buf, Inset * inset)
- : boundary_(false), inset_(inset), buffer_(buf)
-{}
-
-
DocIterator doc_iterator_begin(const Buffer * buf0, const Inset * inset0)
{
Buffer * buf = const_cast<Buffer *>(buf0);
}
-DocIterator::idx_type DocIterator::lastidx() const
+idx_type DocIterator::lastidx() const
{
return top().lastidx();
}
}
-DocIterator::row_type DocIterator::row() const
+row_type DocIterator::row() const
{
return top().row();
}
-DocIterator::col_type DocIterator::col() const
+col_type DocIterator::col() const
{
return top().col();
}
}
+void DocIterator::backwardPosIgnoreCollapsed()
+{
+ backwardPos();
+ if (inTexted()) {
+ Inset const * ins = realInset();
+ if (ins && !ins->editable()) {
+ pop_back(); // move out of collapsed inset
+ }
+ }
+}
+
+
#if 0
// works, but currently not needed
void DocIterator::backwardInset()
size_t const n = slices_.size();
slices_.resize(0);
for (size_t i = 0 ; i < n; ++i) {
+ if (dit[i].empty() && prevMath().lyxCode() == MATH_SCRIPT_CODE)
+ // Workaround: With empty optional argument and a trailing script,
+ // we have empty slices in math macro args (#11676)
+ // FIXME: Find real cause!
+ continue;
LBUFERR(inset);
push_back(dit[i]);
top().inset_ = inset;
}
-void DocIterator::append(DocIterator::idx_type idx, pos_type pos)
+void DocIterator::append(idx_type idx, pos_type pos)
{
slices_.push_back(CursorSlice());
top().idx() = idx;