]> git.lyx.org Git - lyx.git/blobdiff - src/Text2.cpp
Make sure we do not crash here in release mode.
[lyx.git] / src / Text2.cpp
index e290ee0266cfec271b63451591c23efc4e91145f..ae82050fce1c5ca7b00cc83a1bf6b98ee3090ce0 100644 (file)
@@ -33,7 +33,6 @@
 #include "CutAndPaste.h"
 #include "DispatchResult.h"
 #include "ErrorList.h"
-#include "FuncRequest.h"
 #include "Language.h"
 #include "Layout.h"
 #include "Lexer.h"
@@ -168,7 +167,7 @@ void Text::setInsetFont(BufferView const & bv, pit_type pit,
                pos_type pos, Font const & font, bool toggleall)
 {
        Inset * const inset = pars_[pit].getInset(pos);
-       LASSERT(inset && inset->noFontChange(), /**/);
+       LASSERT(inset && inset->resetFontEdit(), /**/);
 
        CursorSlice::idx_type endidx = inset->nargs();
        for (CursorSlice cs(*inset); cs.idx() != endidx; ++cs.idx()) {
@@ -231,7 +230,7 @@ void Text::setLayout(Cursor & cur, docstring const & layout)
        pit_type undopit = undoSpan(end - 1);
        recUndo(cur, start, undopit - 1);
        setLayout(start, end, layout);
-       cur.buffer()->updateBuffer();
+       cur.forceBufferUpdate();
 }
 
 
@@ -290,7 +289,7 @@ void Text::changeDepth(Cursor & cur, DEPTH_CHANGE type)
        }
        // this handles the counter labels, and also fixes up
        // depth values for follow-on (child) paragraphs
-       cur.buffer()->updateBuffer();
+       cur.forceBufferUpdate();
 }
 
 
@@ -346,17 +345,18 @@ void Text::setFont(BufferView const & bv, CursorSlice const & begin,
                pit_type const pit = dit.pit();
                pos_type const pos = dit.pos();
                Inset * inset = pars_[pit].getInset(pos);
-               if (inset && inset->noFontChange()) {
+               if (inset && inset->resetFontEdit()) {
                        // We need to propagate the font change to all
-                       // text cells of the inset (bug 1973).
-                       // FIXME: This should change, see documentation
-                       // of noFontChange in Inset.h
+                       // text cells of the inset (bugs 1973, 6919).
                        setInsetFont(bv, pit, pos, font, toggleall);
                }
                TextMetrics const & tm = bv.textMetrics(this);
                Font f = tm.displayFont(pit, pos);
                f.update(font, language, toggleall);
                setCharFont(pit, pos, f, tm.font_);
+               // font change may change language... 
+               // spell checker has to know that
+               pars_[pit].requestSpellCheck(pos);
        }
 }
 
@@ -618,7 +618,7 @@ bool Text::checkAndActivateInsetVisual(Cursor & cur, bool movingForward, bool mo
 bool Text::cursorBackward(Cursor & cur)
 {
        // Tell BufferView to test for FitCursor in any case!
-       cur.updateFlags(Update::FitCursor);
+       cur.screenUpdateFlags(Update::FitCursor);
 
        // not at paragraph start?
        if (cur.pos() > 0) {
@@ -686,7 +686,7 @@ bool Text::cursorVisRight(Cursor & cur, bool skip_inset)
 bool Text::cursorForward(Cursor & cur)
 {
        // Tell BufferView to test for FitCursor in any case!
-       cur.updateFlags(Update::FitCursor);
+       cur.screenUpdateFlags(Update::FitCursor);
 
        // not at paragraph end?
        if (cur.pos() != cur.lastpos()) {
@@ -917,8 +917,9 @@ void Text::deleteEmptyParagraphMechanism(pit_type first, pit_type last, bool tra
                        }
                }
 
-               // don't delete anything if this is the only remaining paragraph within the given range
-               // note: Text::acceptOrRejectChanges() sets the cursor to 'first' after calling DEPM
+               // don't delete anything if this is the only remaining paragraph
+               // within the given range. Note: Text::acceptOrRejectChanges()
+               // sets the cursor to 'first' after calling DEPM
                if (first == last)
                        continue;