X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2FMathMacro.h;h=276cbdb21f222fda328bce6d05e45f3524e537e8;hb=7ac601f4292412b289178fc3108ad9e715a7c221;hp=dc90e10304543ebc907e4ef7173cc952736653e7;hpb=ddd82f7aa4f124da045f1d9ddd723598b0d39402;p=lyx.git diff --git a/src/mathed/MathMacro.h b/src/mathed/MathMacro.h index dc90e10304..276cbdb21f 100644 --- a/src/mathed/MathMacro.h +++ b/src/mathed/MathMacro.h @@ -18,8 +18,9 @@ #include "MacroTable.h" #include "MathData.h" -namespace lyx { +#include +namespace lyx { /// This class contains the data for a macro. class MathMacro : public InsetMathNest { @@ -40,7 +41,7 @@ public: /// void metrics(MetricsInfo & mi, Dimension & dim) const; /// - int kerning() const; + int kerning(BufferView const * bv) const; /// get cursor position void cursorPos(BufferView const & bv, CursorSlice const & sl, bool boundary, int & x, int & y) const; @@ -87,7 +88,7 @@ public: enum DisplayMode { DISPLAY_INIT, - DISPLAY_NONGREEDY_INIT, + DISPLAY_INTERACTIVE_INIT, DISPLAY_UNFOLDED, DISPLAY_NORMAL, }; @@ -98,7 +99,6 @@ public: /// bool extraBraces() const { return displayMode_ == DISPLAY_NORMAL && arity() > 0; } - /// docstring name() const; /// @@ -127,11 +127,11 @@ protected: /// update the display mode (should only be called after detaching arguments) void setDisplayMode(DisplayMode mode); /// compute the next display mode - DisplayMode computeDisplayMode(MetricsInfo const & mi) const; + DisplayMode computeDisplayMode() const; /// update macro definition - void updateMacro(MetricsInfo & mi); + void updateMacro(MacroContext const & mc); /// check if macro definition changed, argument changed etc. and adapt - void updateRepresentation(MetricsInfo & mi); + void updateRepresentation(Cursor const * bvCur); /// empty macro, put arguments into args, possibly strip arity-attachedArgsNum_ empty ones. /// Includes the optional arguments. void detachArguments(std::vector & args, bool strip); @@ -139,28 +139,24 @@ protected: /// including the optional ones (even if it can be empty here) void attachArguments(std::vector const & args, size_t arity, int optionals); /// - bool editing() { return editing_; } - /// MacroData const * macro() { return macro_; } - + /// + bool editMetrics(BufferView const * bv) const; + private: /// virtual Inset * clone() const; - /// the index of the cursor slice of the macro, or -1 if it is not edited - int cursorIdx(Cursor const & cur) const; /// - bool editMode(Cursor const & cur) const; + bool editMode(BufferView const * bv) const; /// name of macro docstring name_; /// current display mode DisplayMode displayMode_; - /// display mode before change + /// expanded macro with ArgumentProxies InsetMathSqrt expanded_; /// number of arguments that were really attached size_t attachedArgsNum_; - /// cursor position during last draw - idx_type previousCurIdx_; /// optional argument attached? (only in DISPLAY_NORMAL mode) size_t optionals_; /// fold mode to be set in next metrics call? @@ -172,7 +168,7 @@ private: /// this might invalidate after metrics was called MacroData const * macro_; /// - bool editing_; + mutable std::map editing_; /// std::string requires_; /// update macro representation