* 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
This commit is contained in:
Jean-Marc Lasgouttes 2012-02-02 13:39:05 +00:00
parent e770e95861
commit 98cd6c60f7
3 changed files with 25 additions and 1 deletions

View File

@ -1368,7 +1368,6 @@ bool InsetMathNest::getStatus(Cursor & cur, FuncRequest const & cmd,
// we just need to be in math mode to enable that // we just need to be in math mode to enable that
case LFUN_MATH_SIZE: case LFUN_MATH_SIZE:
case LFUN_MATH_SPACE: case LFUN_MATH_SPACE:
case LFUN_MATH_LIMITS:
case LFUN_MATH_EXTERN: case LFUN_MATH_EXTERN:
flag.setEnabled(true); flag.setEnabled(true);
break; break;

View File

@ -14,6 +14,7 @@
#include "Cursor.h" #include "Cursor.h"
#include "DispatchResult.h" #include "DispatchResult.h"
#include "FuncRequest.h" #include "FuncRequest.h"
#include "FuncStatus.h"
#include "InsetMathFont.h" #include "InsetMathFont.h"
#include "InsetMathScript.h" #include "InsetMathScript.h"
#include "InsetMathSymbol.h" #include "InsetMathSymbol.h"
@ -754,6 +755,7 @@ void InsetMathScript::doDispatch(Cursor & cur, FuncRequest & cmd)
//LYXERR("InsetMathScript: request: " << cmd); //LYXERR("InsetMathScript: request: " << cmd);
if (cmd.action() == LFUN_MATH_LIMITS) { if (cmd.action() == LFUN_MATH_LIMITS) {
cur.recordUndoInset();
if (!cmd.argument().empty()) { if (!cmd.argument().empty()) {
if (cmd.argument() == "limits") if (cmd.argument() == "limits")
limits_ = 1; 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 // the idea for dual scripts came from the eLyXer code
void InsetMathScript::validate(LaTeXFeatures & features) const void InsetMathScript::validate(LaTeXFeatures & features) const
{ {

View File

@ -110,6 +110,9 @@ public:
void validate(LaTeXFeatures &features) const; void validate(LaTeXFeatures &features) const;
protected: protected:
virtual void doDispatch(Cursor & cur, FuncRequest & cmd); 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: private:
virtual Inset * clone() const; virtual Inset * clone() const;
/// returns x offset for main part /// returns x offset for main part