Jean-Marc Lasgouttes wrote:
> -void MathNestInset::notifyCursorLeaves(LCursor & cur)
> +bool MathNestInset::notifyCursorLeaves(LCursor & cur)
> {
> #ifdef WITH_WARNINGS
> #warning look here
> @@ -373,6 +373,7 @@ void MathNestInset::notifyCursorLeaves(L
> }
> }
> #endif
> + return false;
> }
FWIW, I have reimplemented MathNestInset::notifyCursorLeaves some time ago
(just getting it into its previous state again). Maybe this is of interest?
Jürgen
Index: src/mathed/math_nestinset.C
===================================================================
--- src/mathed/math_nestinset.C (Revision 14784)
+++ src/mathed/math_nestinset.C (Arbeitskopie)
@@ -21,6 +21,7 @@
#include "math_data.h"
#include "math_deliminset.h"
#include "math_factory.h"
+#include "math_fontinset.h"
#include "math_hullinset.h"
#include "math_mathmlstream.h"
#include "math_macroarg.h"
@@ -350,35 +351,44 @@ int MathNestInset::latex(Buffer const &,
}
-void MathNestInset::notifyCursorLeaves(LCursor & /*cur*/)
+void MathNestInset::notifyCursorLeaves(LCursor & cur)
{
-#ifdef WITH_WARNINGS
-#warning look here
-#endif
-#if 0
MathArray & ar = cur.cell();
// remove base-only "scripts"
for (pos_type i = 0; i + 1 < ar.size(); ++i) {
- MathScriptInset * p = operator[](i).nucleus()->asScriptInset();
+ MathScriptInset * p = ar[i].nucleus()->asScriptInset();
if (p && p->nargs() == 1) {
MathArray ar = p->nuc();
- erase(i);
- insert(i, ar);
- cur.adjust(i, ar.size() - 1);
+ ar.erase(i);
+ ar.insert(i, ar);
+ // (reimplementation of old math_cursor::adjust):
+ if (cur.pos() > i) {
+ cur.pos() += (ar.size() - 1);
+ cur.resetAnchor();
+ }
+ // just to be on the safe side
+ // theoretically not necessary
+ cur.normalize();
}
}
// glue adjacent font insets of the same kind
- for (pos_type i = 0; i + 1 < size(); ++i) {
- MathFontInset * p = operator[](i).nucleus()->asFontInset();
- MathFontInset const * q = operator[](i + 1)->asFontInset();
+ for (pos_type i = 0; i + 1 < ar.size(); ++i) {
+ MathFontInset * p = ar[i].nucleus()->asFontInset();
+ MathFontInset const * q = ar[i + 1]->asFontInset();
if (p && q && p->name() == q->name()) {
p->cell(0).append(q->cell(0));
- erase(i + 1);
- cur.adjust(i, -1);
+ ar.erase(i + 1);
+ // (reimplementation of old math_cursor::adjust):
+ if (cur.pos() > i) {
+ cur.pos() += (ar.size() - 1);
+ cur.resetAnchor();
+ }
+ // just to be on the safe side
+ // theoretically not necessary
+ cur.normalize();
}
}
-#endif
}