The real problem is the notifyCursorLeaves is called in a chaotic
way. In certain functions like Cursor::popLeft, or the handler for
mouse click in the BufferView, this function is called. But of course
there can be plenty of way to leave an inset. A clean way would be to
remove these calls altogether and instead check if the cursor moved
after each lfun. Then all the inset which are not referenced in the
cursor anymore should be notified. And the flags should be or'ed to
the ones returned from the dispatch handler.
But this of course means that the inset pointers must still be valid
in a cursor, even after a dispatch. This means that we need some kind
of reference counting in insets. Not a nice thought either.
Stefan
PGP.sig
Description: Signierter Teil der Nachricht