]> git.lyx.org Git - features.git/blobdiff - src/mathed/InsetMathHull.cpp
Fix broken Apple speller interface
[features.git] / src / mathed / InsetMathHull.cpp
index 8ea552dd29ef15ed6f4b6cec1b59639b290a2d63..0ab06d27be34854c2272b19bb2b2f8fb7778371b 100644 (file)
@@ -228,14 +228,6 @@ void InsetMathHull::setBuffer(Buffer & buffer)
 }
 
 
-// FIXME This should really be controlled by the TOC level, or
-// something of the sort.
-namespace {
-       const char * counters_to_save[] = {"section", "chapter"};
-       unsigned int const numcnts = sizeof(counters_to_save)/sizeof(char *);
-} // namespace
-
-
 void InsetMathHull::updateBuffer(ParIterator const & it, UpdateType utype, bool const deleted)
 {
        if (!buffer_) {
@@ -257,6 +249,7 @@ void InsetMathHull::updateBuffer(ParIterator const & it, UpdateType utype, bool
                docstring const eqstr = from_ascii("equation");
                if (cnts.hasCounter(eqstr)) {
                        for (size_t i = 0; i != label_.size(); ++i) {
+                               docstring const oldnumber = numbers_[i];
                                if (numbered(i)) {
                                        Paragraph const & par = it.paragraph();
                                        if (!par.isDeleted(it.pos())) {
@@ -266,6 +259,12 @@ void InsetMathHull::updateBuffer(ParIterator const & it, UpdateType utype, bool
                                                numbers_[i] = from_ascii("#");
                                } else
                                        numbers_[i] = empty_docstring();
+                               // If the numbering has changed, trigger a new preview
+                               if (oldnumber != numbers_[i] && RenderPreview::previewMath()) {
+                                       // Do we need to remove it first?
+                                       //preview_->removePreview(*buffer_);
+                                       preparePreview(it);
+                               }
                        }
                }
        }
@@ -1826,11 +1825,22 @@ void InsetMathHull::doDispatch(Cursor & cur, FuncRequest & cmd)
                //lyxerr << "toggling all numbers" << endl;
                cur.recordUndoInset();
                bool old = numberedType();
-               if (type_ == hullMultline)
-                       numbered(nrows() - 1, !old);
-               else
-                       for (row_type row = 0; row < nrows(); ++row)
+               if (type_ == hullMultline) {
+                       row_type row = nrows() - 1;
+                       numbered(row, !old);
+                       if (old && label_[row]) {
+                               delete label_[row];
+                               label_[row] = 0;
+                       }
+               } else {
+                       for (row_type row = 0; row < nrows(); ++row) {
                                numbered(row, !old);
+                               if (old && label_[row]) {
+                                       delete label_[row];
+                                       label_[row] = 0;
+                               }
+                       }
+               }
 
                cur.message(old ? _("No number") : _("Number"));
                cur.forceBufferUpdate();
@@ -1843,6 +1853,10 @@ void InsetMathHull::doDispatch(Cursor & cur, FuncRequest & cmd)
                bool old = numbered(r);
                cur.message(old ? _("No number") : _("Number"));
                numbered(r, !old);
+               if (old && label_[r]) {
+                       delete label_[r];
+                       label_[r] = 0;
+               }
                cur.forceBufferUpdate();
                break;
        }