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()
for (size_t i = 0, n = sl.size(); i != n; ++i) {
if (inset == nullptr) {
// FIXME
- LYXERR0(" Should not happen, but does e.g. after "
- "C-n C-l C-z S-C-z\n"
- << " or when a Buffer has been concurrently edited by two views"
- << '\n' << "dit: " << *this << '\n'
- << " lastpos: " << slices_[i].lastpos());
+ LYXERR0("Null inset on cursor stack.");
fixIfBroken();
break;
}
}
-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;