X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FInsetList.C;h=db74a08e816f54e0f02796eaaf45a14470091d88;hb=69bee02a8901793b34ac5ca6d07e93910cef4005;hp=0aa299d8bcd084aebe89d87e347a6416cb4c5f8a;hpb=e835c9477b521fb191d29b44742565aec1525122;p=lyx.git diff --git a/src/InsetList.C b/src/InsetList.C index 0aa299d8bc..db74a08e81 100644 --- a/src/InsetList.C +++ b/src/InsetList.C @@ -15,6 +15,7 @@ #include "buffer.h" #include "bufferparams.h" +#include "BranchList.h" #include "BufferView.h" #include "debug.h" @@ -24,24 +25,20 @@ using lyx::pos_type; using std::endl; using std::lower_bound; -using std::upper_bound; - namespace { -struct MatchIt { - /// used by lower_bound and upper_bound - inline - int operator()(InsetList::InsetTable const & a, - InsetList::InsetTable const & b) const +class InsetTablePosLess : public std::binary_function { +public: + bool operator()(InsetList::InsetTable const & t1, + InsetList::InsetTable const & t2) const { - return a.pos < b.pos; + return t1.pos < t2.pos; } }; } // namespace anon - InsetList::~InsetList() { // If we begin storing a shared_ptr in the List @@ -54,48 +51,26 @@ InsetList::~InsetList() } -InsetList::iterator InsetList::begin() -{ - return list.begin(); -} - - -InsetList::iterator InsetList::end() -{ - return list.end(); -} - - -InsetList::const_iterator InsetList::begin() const -{ - return list.begin(); -} - - -InsetList::const_iterator InsetList::end() const +InsetList::iterator InsetList::insetIterator(pos_type pos) { - return list.end(); + InsetTable search_elem(pos, 0); + return lower_bound(list.begin(), list.end(), search_elem, + InsetTablePosLess()); } -InsetList::iterator -InsetList::insetIterator(pos_type pos) +InsetList::const_iterator InsetList::insetIterator(pos_type pos) const { InsetTable search_elem(pos, 0); - List::iterator it = lower_bound(list.begin(), - list.end(), - search_elem, MatchIt()); - return it; + return lower_bound(list.begin(), list.end(), search_elem, + InsetTablePosLess()); } void InsetList::insert(InsetOld * inset, lyx::pos_type pos) { - InsetTable search_elem(pos, 0); List::iterator end = list.end(); - List::iterator it = lower_bound(list.begin(), - end, - search_elem, MatchIt()); + List::iterator it = insetIterator(pos); if (it != end && it->pos == pos) { lyxerr << "ERROR (InsetList::insert): " << "There is an inset in position: " << pos << endl; @@ -107,12 +82,8 @@ void InsetList::insert(InsetOld * inset, lyx::pos_type pos) void InsetList::erase(pos_type pos) { - InsetTable search_elem(pos, 0); List::iterator end = list.end(); - List::iterator it = - lower_bound(list.begin(), - end, - search_elem, MatchIt()); + List::iterator it = insetIterator(pos); if (it != end && it->pos == pos) { delete it->inset; list.erase(it); @@ -122,12 +93,8 @@ void InsetList::erase(pos_type pos) InsetOld * InsetList::release(pos_type pos) { - InsetTable search_elem(pos, 0); List::iterator end = list.end(); - List::iterator it = - lower_bound(list.begin(), - end, - search_elem, MatchIt()); + List::iterator it = insetIterator(pos); if (it != end && it->pos == pos) { InsetOld * tmp = it->inset; it->inset = 0; @@ -139,12 +106,8 @@ InsetOld * InsetList::release(pos_type pos) InsetOld * InsetList::get(pos_type pos) const { - InsetTable search_elem(pos, 0); List::const_iterator end = list.end(); - List::const_iterator it = - lower_bound(list.begin(), - end, - search_elem, MatchIt()); + List::const_iterator it = insetIterator(pos); if (it != end && it->pos == pos) return it->inset; return 0; @@ -153,11 +116,8 @@ InsetOld * InsetList::get(pos_type pos) const void InsetList::increasePosAfterPos(pos_type pos) { - InsetTable search_elem(pos, 0); List::iterator end = list.end(); - List::iterator it = lower_bound(list.begin(), - end, - search_elem, MatchIt()); + List::iterator it = insetIterator(pos); for (; it != end; ++it) { ++it->pos; } @@ -166,47 +126,28 @@ void InsetList::increasePosAfterPos(pos_type pos) void InsetList::decreasePosAfterPos(pos_type pos) { - InsetTable search_elem(pos, 0); List::iterator end = list.end(); - List::iterator it = upper_bound(list.begin(), - end, - search_elem, MatchIt()); + List::iterator it = insetIterator(pos); for (; it != end; ++it) { --it->pos; } } -void InsetList::deleteInsetsLyXText(BufferView * bv) -{ - List::iterator it = list.begin(); - List::iterator end = list.end(); - for (; it != end; ++it) { - if (it->inset) { - if (it->inset->isTextInset()) { - static_cast - (it->inset)->deleteLyXText(bv, true); - } - } - } -} - - -void InsetList::insetsOpenCloseBranch(BufferView * bv) +void InsetList::insetsOpenCloseBranch(Buffer const & buf) { - BufferParams bp = bv->buffer()->params(); List::iterator it = list.begin(); List::iterator end = list.end(); for (; it != end; ++it) { - if (it->inset && it->inset->lyxCode() == InsetOld::BRANCH_CODE) { - InsetBranch * inset = static_cast(it->inset); - if (bp.branchlist.selected(inset->params().branch)) { - inset->open(bv); - } else { - inset->close(bv); - } + if (!it->inset || + it->inset->lyxCode() != InsetOld::BRANCH_CODE) + continue; + + InsetBranch * inset = static_cast(it->inset); + if (inset->isBranchSelected(buf.params().branchlist())) { + inset->open(); + } else { + inset->close(); } } } - -