I have reduced this to a minimal case: 

- place a mathinset on a row
- place a collapsable inset on the next row
- make sure it is _collapsed_
- mouse the cursor into the math inset, and press <down>.

Notes:
* There may be several lines of text in-between mathinset and
  collapsable inset -- as long as they are _simultaneously visible_.

* Arrow up works as well  (i.e., causes the crash) as arrow down (this
is apparently because of a call to bv_funcs::getPos, which implies a
call to coordOffset, needed to find the proper x coordinate on the new
row).

What happens is that in bufferview_funcs.C (coordOffset method), we have 

    166                 sl.inset().cursorPos(sl, boundary && ((i+1) == 
dit.depth        ()), xx, yy);

which calls in insetcollapsable.C:

    204 void InsetCollapsable::cursorPos
    205         (CursorSlice const & sl, bool boundary, int & x, int & y) const
    206 {
    207         BOOST_ASSERT(status() != Collapsed);

Question: why does this _normally_ not trigger an assert, even if the
inset is closed? And why does it when coming directly from a mathinset?

Note that this assert happens _always_ when leaving a math inset, when a
collapsed collapsable inset is simultaneously visible... i.e., rather
often :-(

- Martin

Attachment: pgpCS4BnRV0ph.pgp
Description: PGP signature

Reply via email to