Fix crash in brutefind2() when the inset was not in the coordcache.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@16079 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Abdelrazak Younes 2006-11-27 16:40:03 +00:00
parent 64ec49d001
commit 7d192a2797

View File

@ -49,6 +49,7 @@
#include <sstream> #include <sstream>
#include <limits> #include <limits>
#include <map>
namespace lyx { namespace lyx {
@ -96,7 +97,20 @@ namespace {
int xo; int xo;
int yo; int yo;
InsetBase const * inset = &it.inset(); InsetBase const * inset = &it.inset();
Point o = c.bv().coordCache().getInsets().xy(inset); std::map<InsetBase const *, Point> const & data =
c.bv().coordCache().getInsets().getData();
std::map<InsetBase const *, Point>::const_iterator I = data.find(inset);
// FIXME: in the case where the inset is not in the cache, this
// means that no part of it is visible on screen. In this case
// we don't do elaborate search and we just return the forwarded
// DocIterator at its beginning.
if (I == data.end()) {
it.top().pos() = 0;
return it;
}
Point o = I->second;
inset->cursorPos(c.bv(), it.top(), c.boundary(), xo, yo); inset->cursorPos(c.bv(), it.top(), c.boundary(), xo, yo);
// Convert to absolute // Convert to absolute
xo += o.x_; xo += o.x_;