X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2FMathMacroTemplate.cpp;h=2989e2be5ce01ba25c5aab5ccabdf091308552d4;hb=981e958b9d63930c83b1adced65b75b3d857ac97;hp=5c0c1b65c997da5bba91f600948854e7c8ec72fe;hpb=0e14f379f367e4d3f5f8263185e0903424a746e7;p=lyx.git diff --git a/src/mathed/MathMacroTemplate.cpp b/src/mathed/MathMacroTemplate.cpp index 5c0c1b65c9..2989e2be5c 100644 --- a/src/mathed/MathMacroTemplate.cpp +++ b/src/mathed/MathMacroTemplate.cpp @@ -35,7 +35,6 @@ #include "FuncStatus.h" #include "Lexer.h" #include "LyXRC.h" -#include "Undo.h" #include "frontends/Painter.h" @@ -48,6 +47,7 @@ #include "support/docstream.h" #include "support/lstrings.h" +#include #include using namespace std; @@ -592,7 +592,7 @@ void MathMacroTemplate::metrics(MetricsInfo & mi, Dimension & dim) const void MathMacroTemplate::draw(PainterInfo & pi, int x, int y) const { - ColorChanger dummy0(pi.base.font, from_ascii("math")); + ColorChanger dummy0(pi.base.font, Color_math); FontSetChanger dummy1(pi.base, from_ascii("mathnormal")); StyleChanger dummy2(pi.base, LM_ST_TEXT); @@ -722,11 +722,11 @@ void MathMacroTemplate::changeArity(Cursor & cur, { // remove parameter which do not appear anymore in the definition for (int i = numargs_; i > newNumArg; --i) - removeParameter(cur, inset_pos, numargs_ - 1, false); + removeParameter(cur, inset_pos, numargs_ - 1, true); // add missing parameter for (int i = numargs_; i < newNumArg; ++i) - insertParameter(cur, inset_pos, numargs_, false, false); + insertParameter(cur, inset_pos, numargs_, true, false); } @@ -737,7 +737,8 @@ public: /// AddRemoveMacroInstanceFix(int n, bool insert) : n_(n), insert_(insert) {} /// - void operator()(MathMacro * macro) { + void operator()(MathMacro * macro) + { if (macro->folded()) { if (insert_) macro->insertArgument(n_); @@ -761,7 +762,8 @@ public: /// OptionalsMacroInstanceFix(int optionals) : optionals_(optionals) {} /// - void operator()(MathMacro * macro) { + void operator()(MathMacro * macro) + { macro->setOptionals(optionals_); } @@ -792,18 +794,15 @@ void fixMacroInstances(Cursor & cur, DocIterator const & inset_pos, // remember hull to trigger preview reload DocIterator hull(dit.buffer()); bool preview_reload_needed = false; + set preview_hulls; // iterate over all positions until macro is redefined for (; dit; dit.forwardPos()) { // left the outer hull? if (!hull.empty() && dit.depth() == hull.depth()) { - // reload the preview if necessary + // schedule reload of the preview if necessary if (preview_reload_needed) { - InsetMathHull * inset_hull = - hull.nextInset()->asInsetMath()->asHullInset(); - LASSERT(inset_hull, /**/); - inset_hull->reloadPreview(hull); - cur.screenUpdateFlags(Update::Force); + preview_hulls.insert(hull); preview_reload_needed = false; } hull.clear(); @@ -839,6 +838,19 @@ void fixMacroInstances(Cursor & cur, DocIterator const & inset_pos, preview_reload_needed = true; } } + + if (!preview_hulls.empty()) { + // reload the scheduled previews + set::const_iterator sit = preview_hulls.begin(); + set::const_iterator end = preview_hulls.end(); + for (; sit != end; ++sit) { + InsetMathHull * inset_hull = + sit->nextInset()->asInsetMath()->asHullInset(); + LASSERT(inset_hull, /**/); + inset_hull->reloadPreview(*sit); + } + cur.screenUpdateFlags(Update::Force); + } } @@ -1080,6 +1092,7 @@ bool MathMacroTemplate::getStatus(Cursor & /*cur*/, FuncRequest const & cmd, flag.setEnabled(numargs_ < 9); break; + case LFUN_MATH_MACRO_REMOVE_GREEDY_PARAM: case LFUN_MATH_MACRO_REMOVE_PARAM: { int num = numargs_; if (arg.size() != 0) @@ -1354,7 +1367,7 @@ void MathMacroTemplate::infoize(odocstream & os) const } -docstring MathMacroTemplate::contextMenu(BufferView const &, int, int) const +docstring MathMacroTemplate::contextMenuName() const { return from_ascii("context-math-macro-definition"); }