]> git.lyx.org Git - lyx.git/blobdiff - src/mathed/InsetMathHull.cpp
revert last patch. there's something wrong, possibly unrelated to this
[lyx.git] / src / mathed / InsetMathHull.cpp
index b8607a89f2b3fa5656852ce2f299579fa1ff5a6e..8b92ddc96f0b68a6f58dc8bf603e286f68bca82a 100644 (file)
@@ -26,6 +26,7 @@
 #include "InsetMathRef.h"
 
 #include "Buffer.h"
+#include "buffer_funcs.h"
 #include "BufferParams.h"
 #include "BufferView.h"
 #include "CutAndPaste.h"
@@ -444,9 +445,7 @@ void InsetMathHull::drawT(TextPainter & pain, int x, int y) const
 }
 
 
-namespace {
-
-docstring const latex_string(InsetMathHull const & inset)
+static docstring latexString(InsetMathHull const & inset)
 {
        odocstringstream ls;
        WriteStream wi(ls, false, false);
@@ -454,13 +453,11 @@ docstring const latex_string(InsetMathHull const & inset)
        return ls.str();
 }
 
-} // namespace anon
-
 
 void InsetMathHull::addPreview(graphics::PreviewLoader & ploader) const
 {
        if (RenderPreview::status() == LyXRC::PREVIEW_ON) {
-               docstring const snippet = latex_string(*this);
+               docstring const snippet = latexString(*this);
                preview_->addPreview(snippet, ploader);
        }
 }
@@ -470,7 +467,7 @@ bool InsetMathHull::notifyCursorLeaves(Cursor const & /*old*/, Cursor & cur)
 {
        if (RenderPreview::status() == LyXRC::PREVIEW_ON) {
                Buffer const & buffer = cur.buffer();
-               docstring const snippet = latex_string(*this);
+               docstring const snippet = latexString(*this);
                preview_->addPreview(snippet, buffer);
                preview_->startLoading(buffer);
                cur.updateFlags(Update::Force);
@@ -492,7 +489,11 @@ void InsetMathHull::label(row_type row, docstring const & label)
 {
        //lyxerr << "setting label '" << label << "' for row " << row << endl;
        if (label_[row]) {
-               label_[row]->updateCommand(label);
+               if (label.empty()) {
+                       delete label_[row];
+                       label_[row] = dummy_pointer;
+               } else
+                       label_[row]->updateCommand(label);
                return;
        }
        InsetCommandParams p(LABEL_CODE);
@@ -564,7 +565,6 @@ void InsetMathHull::validate(LaTeXFeatures & features) const
        //if (features.amsstyle)
        //  return;
 
-       features.require("boldsymbol");
        //features.binom      = true;
 
        InsetMathGrid::validate(features);
@@ -681,7 +681,16 @@ void InsetMathHull::addRow(row_type row)
 {
        if (!rowChangeOK())
                return;
-       nonum_.insert(nonum_.begin() + row + 1, !numberedType());
+
+       bool numbered = numberedType();
+       if (type_ == hullMultline) {
+               if (row + 1 == nrows())
+                       nonum_[row] = true;
+               else
+                       numbered = false;
+       }
+
+       nonum_.insert(nonum_.begin() + row + 1, !numbered);
        label_.insert(label_.begin() + row + 1, dummy_pointer);
        InsetMathGrid::addRow(row);
 }
@@ -743,7 +752,7 @@ docstring InsetMathHull::nicelabel(row_type row) const
                return docstring();
        if (!label_[row])
                return from_ascii("(#)");
-       return '(' + label_[row]->screenLabel() + ')';
+       return '(' + label_[row]->screenLabel() + from_ascii(", #)");
 }
 
 
@@ -1117,7 +1126,7 @@ void InsetMathHull::doDispatch(Cursor & cur, FuncRequest & cmd)
                // just swallow this
                break;
 
-       case LFUN_NEW_LINE:
+       case LFUN_NEWLINE_INSERT:
                // some magic for the common case
                if (type_ == hullSimple || type_ == hullEquation) {
                        cur.recordUndoInset();
@@ -1164,7 +1173,7 @@ void InsetMathHull::doDispatch(Cursor & cur, FuncRequest & cmd)
 
                InsetCommandParams p(LABEL_CODE);
                p["name"] = cmd.argument().empty() ? old_label : cmd.argument();
-               string const data = InsetCommandMailer::params2string("label", p);
+               string const data = InsetCommand::params2string("label", p);
 
                if (cmd.argument().empty())
                        cur.bv().showDialog("label", data);
@@ -1175,13 +1184,33 @@ void InsetMathHull::doDispatch(Cursor & cur, FuncRequest & cmd)
                break;
        }
 
+       case LFUN_WORD_DELETE_FORWARD:
+       case LFUN_CHAR_DELETE_FORWARD:
+               if (col(cur.idx()) + 1 == ncols()
+                   && cur.pos() == cur.lastpos()) {
+                       if (!label(row(cur.idx())).empty()) {
+                               cur.recordUndoInset();
+                               label(row(cur.idx()), docstring());
+                       } else if (numbered(row(cur.idx()))) {
+                               cur.recordUndoInset();
+                               numbered(row(cur.idx()), false);
+                       } else {
+                               InsetMathGrid::doDispatch(cur, cmd);
+                               return;
+                       }
+               } else {
+                       InsetMathGrid::doDispatch(cur, cmd);
+                       return;
+               }
+               break;
+
        case LFUN_INSET_INSERT: {
                //lyxerr << "arg: " << to_utf8(cmd.argument()) << endl;
                // FIXME: this should be cleaned up to use InsetLabel methods directly.
                string const name = cmd.getArg(0);
                if (name == "label") {
                        InsetCommandParams p(LABEL_CODE);
-                       InsetCommandMailer::string2params(name, to_utf8(cmd.argument()), p);
+                       InsetCommand::string2params(name, to_utf8(cmd.argument()), p);
                        docstring str = p["name"];
                        cur.recordUndoInset();
                        row_type const r = (type_ == hullMultline) ? nrows() - 1 : cur.row();
@@ -1256,7 +1285,7 @@ bool InsetMathHull::getStatus(Cursor & cur, FuncRequest const & cmd,
        case LFUN_FINISHED_LEFT:
        case LFUN_UP:
        case LFUN_DOWN:
-       case LFUN_NEW_LINE:
+       case LFUN_NEWLINE_INSERT:
        case LFUN_MATH_EXTERN:
        case LFUN_MATH_MUTATE:
        case LFUN_MATH_DISPLAY:
@@ -1606,4 +1635,10 @@ void InsetMathHull::textString(odocstream & os) const
 }
 
 
+docstring InsetMathHull::contextMenu(BufferView const &, int, int) const
+{
+       return from_ascii("context-math");
+}
+
+
 } // namespace lyx