From 98cd6c60f71bdbacc945f2dbcb74cfacad4e52b5 Mon Sep 17 00:00:00 2001 From: Jean-Marc Lasgouttes Date: Thu, 2 Feb 2012 13:39:05 +0000 Subject: [PATCH] * InsetMathScript::doDispatch : properly record undo information before changing limits status (fixes bug #8007) * InsetMathScript::getStatus (new) : handle properly status for LFUN_MATH_LIMITS here, along with checkmark support for the menu) git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40700 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/mathed/InsetMathNest.cpp | 1 - src/mathed/InsetMathScript.cpp | 22 ++++++++++++++++++++++ src/mathed/InsetMathScript.h | 3 +++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/mathed/InsetMathNest.cpp b/src/mathed/InsetMathNest.cpp index affe7918c6..bd702464c3 100644 --- a/src/mathed/InsetMathNest.cpp +++ b/src/mathed/InsetMathNest.cpp @@ -1368,7 +1368,6 @@ bool InsetMathNest::getStatus(Cursor & cur, FuncRequest const & cmd, // we just need to be in math mode to enable that case LFUN_MATH_SIZE: case LFUN_MATH_SPACE: - case LFUN_MATH_LIMITS: case LFUN_MATH_EXTERN: flag.setEnabled(true); break; diff --git a/src/mathed/InsetMathScript.cpp b/src/mathed/InsetMathScript.cpp index ed06d363d6..a9f4b38bd1 100644 --- a/src/mathed/InsetMathScript.cpp +++ b/src/mathed/InsetMathScript.cpp @@ -14,6 +14,7 @@ #include "Cursor.h" #include "DispatchResult.h" #include "FuncRequest.h" +#include "FuncStatus.h" #include "InsetMathFont.h" #include "InsetMathScript.h" #include "InsetMathSymbol.h" @@ -754,6 +755,7 @@ void InsetMathScript::doDispatch(Cursor & cur, FuncRequest & cmd) //LYXERR("InsetMathScript: request: " << cmd); if (cmd.action() == LFUN_MATH_LIMITS) { + cur.recordUndoInset(); if (!cmd.argument().empty()) { if (cmd.argument() == "limits") limits_ = 1; @@ -772,6 +774,26 @@ void InsetMathScript::doDispatch(Cursor & cur, FuncRequest & cmd) } +bool InsetMathScript::getStatus(Cursor & cur, FuncRequest const & cmd, + FuncStatus & flag) const +{ + if (cmd.action() == LFUN_MATH_LIMITS) { + if (!cmd.argument().empty()) { + if (cmd.argument() == "limits") + flag.setOnOff(limits_ == 1); + else if (cmd.argument() == "nolimits") + flag.setOnOff(limits_ == -1); + else + flag.setOnOff(limits_ == 0); + } + flag.setEnabled(true); + return true; + } + + return InsetMathNest::getStatus(cur, cmd, flag); +} + + // the idea for dual scripts came from the eLyXer code void InsetMathScript::validate(LaTeXFeatures & features) const { diff --git a/src/mathed/InsetMathScript.h b/src/mathed/InsetMathScript.h index ecdda3b5a7..e84886b7d3 100644 --- a/src/mathed/InsetMathScript.h +++ b/src/mathed/InsetMathScript.h @@ -110,6 +110,9 @@ public: void validate(LaTeXFeatures &features) const; protected: virtual void doDispatch(Cursor & cur, FuncRequest & cmd); + /// do we want to handle this event? + bool getStatus(Cursor & cur, FuncRequest const & cmd, + FuncStatus & status) const; private: virtual Inset * clone() const; /// returns x offset for main part -- 2.39.5