X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FInsetList.cpp;h=d1b6d43d805b386d48668a532b71f79cc2a1f02d;hb=28be7d552f62cc02fa86d7f79201d089bfb2d7b5;hp=1f205858794ef899ac7aabeb2d0d214dcaf85cf1;hpb=9383f4c3c6f9cfab2d658701ba66e2b54cd68bea;p=lyx.git diff --git a/src/InsetList.cpp b/src/InsetList.cpp index 1f20585879..d1b6d43d80 100644 --- a/src/InsetList.cpp +++ b/src/InsetList.cpp @@ -3,7 +3,7 @@ * This file is part of LyX, the document processor. * Licence details can be found in the file COPYING. * - * \author Lars Gullik Bjønnes + * \author Lars Gullik Bjønnes * \author Martin Vermeer * * Full author contact details are available in file CREDITS. @@ -13,12 +13,11 @@ #include "InsetList.h" -#include "Buffer.h" -#include "BufferParams.h" -#include "BranchList.h" +#include "insets/Inset.h" + #include "support/debug.h" -#include "insets/InsetBranch.h" +#include using namespace std; @@ -40,16 +39,54 @@ struct InsetTablePosLess } // namespace anon +InsetList::InsetList(InsetList const & il) : list_(il.list_) +{ + List::iterator it = list_.begin(); + List::iterator end = list_.end(); + for (; it != end; ++it) + it->inset = it->inset->clone(); +} + + +InsetList::InsetList(InsetList const & il, pos_type beg, pos_type end) +{ + InsetList::const_iterator cit = il.begin(); + InsetList::const_iterator cend = il.end(); + for (; cit != cend; ++cit) { + if (cit->pos < beg) + continue; + if (cit->pos >= end) + break; + // Add a new entry in the insetlist_. + insert(cit->inset->clone(), cit->pos - beg); + } +} + InsetList::~InsetList() { - // If we begin storing a shared_ptr in the List - // this code can be removed. (Lgb) List::iterator it = list_.begin(); List::iterator end = list_.end(); - for (; it != end; ++it) { + for (; it != end; ++it) delete it->inset; - } +} + + +void InsetList::setBuffer(Buffer & b) +{ + List::iterator it = list_.begin(); + List::iterator end = list_.end(); + for (; it != end; ++it) + it->inset->setBuffer(b); +} + + +void InsetList::resetBuffer() +{ + List::iterator it = list_.begin(); + List::iterator end = list_.end(); + for (; it != end; ++it) + it->inset->resetBuffer(); } @@ -120,9 +157,8 @@ void InsetList::increasePosAfterPos(pos_type pos) { List::iterator end = list_.end(); List::iterator it = insetIterator(pos); - for (; it != end; ++it) { + for (; it != end; ++it) ++it->pos; - } } @@ -130,19 +166,8 @@ void InsetList::decreasePosAfterPos(pos_type pos) { List::iterator end = list_.end(); List::iterator it = insetIterator(pos); - for (; it != end; ++it) { - --it->pos; - } -} - - -InsetList::InsetList(InsetList const & il) -{ - list_ = il.list_; - List::iterator it = list_.begin(); - List::iterator end = list_.end(); for (; it != end; ++it) - it->inset = it->inset->clone(); + --it->pos; }