X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FInsetList.C;h=db74a08e816f54e0f02796eaaf45a14470091d88;hb=69bee02a8901793b34ac5ca6d07e93910cef4005;hp=1921cc108a8f402ad577a79a1554ac870df70b01;hpb=6ff15cc813aa4575144e1287747b5468f56c84aa;p=lyx.git diff --git a/src/InsetList.C b/src/InsetList.C index 1921cc108a..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" @@ -25,22 +26,19 @@ using lyx::pos_type; using std::endl; using std::lower_bound; - namespace { -struct MatchIt { - /// used by lower_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 @@ -53,41 +51,19 @@ 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 -{ - return list.end(); -} - - InsetList::iterator InsetList::insetIterator(pos_type pos) { InsetTable search_elem(pos, 0); - return lower_bound(list.begin(), list.end(), search_elem, MatchIt()); + return lower_bound(list.begin(), list.end(), search_elem, + InsetTablePosLess()); } InsetList::const_iterator InsetList::insetIterator(pos_type pos) const { InsetTable search_elem(pos, 0); - return lower_bound(list.begin(), list.end(), search_elem, MatchIt()); + return lower_bound(list.begin(), list.end(), search_elem, + InsetTablePosLess()); } @@ -163,13 +139,15 @@ void InsetList::insetsOpenCloseBranch(Buffer const & buf) 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 (buf.params().branchlist().selected(inset->params().branch)) { - inset->open(); - } else { - inset->close(); - } + 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(); } } }