From 328e8b26278f2857d24cf0cad4277263a5e6daae Mon Sep 17 00:00:00 2001 From: Vincent van Ravesteijn Date: Fri, 3 Dec 2010 02:44:16 +0000 Subject: [PATCH] Fix bug #2100: No display equations allowed in a non-fixed width tabular cell. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@36673 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/insets/InsetTabular.cpp | 8 +++++++- src/mathed/InsetMathHull.cpp | 20 ++++++++++++++++++-- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/insets/InsetTabular.cpp b/src/insets/InsetTabular.cpp index 73344bd7b7..0a0a9097b3 100644 --- a/src/insets/InsetTabular.cpp +++ b/src/insets/InsetTabular.cpp @@ -3226,7 +3226,7 @@ bool InsetTableCell::allowParagraphCustomization(idx_type) const bool InsetTableCell::getStatus(Cursor & cur, FuncRequest const & cmd, FuncStatus & status) const { - bool enabled; + bool enabled = true; switch (cmd.action()) { case LFUN_LAYOUT: enabled = !forcePlainLayout(); @@ -3234,6 +3234,12 @@ bool InsetTableCell::getStatus(Cursor & cur, FuncRequest const & cmd, case LFUN_LAYOUT_PARAGRAPH: enabled = allowParagraphCustomization(); break; + + case LFUN_MATH_DISPLAY: + if (!hasFixedWidth()) { + enabled = false; + break; + } //fall-through default: return InsetText::getStatus(cur, cmd, status); } diff --git a/src/mathed/InsetMathHull.cpp b/src/mathed/InsetMathHull.cpp index 8ff7b230d4..04c5b82c3e 100644 --- a/src/mathed/InsetMathHull.cpp +++ b/src/mathed/InsetMathHull.cpp @@ -1480,9 +1480,25 @@ bool InsetMathHull::getStatus(Cursor & cur, FuncRequest const & cmd, return true; case LFUN_MATH_MUTATE: { - HullType ht = hullType(cmd.argument()); + HullType const ht = hullType(cmd.argument()); status.setOnOff(type_ == ht); - // fall through + status.setEnabled(true); + + if (ht != hullSimple) { + Cursor tmpcur = cur; + while (!tmpcur.empty()) { + InsetCode code = tmpcur.inset().lyxCode(); + if (code == BOX_CODE) { + return true; + } else if (code == TABULAR_CODE) { + FuncRequest tmpcmd(LFUN_MATH_DISPLAY); + if (tmpcur.getStatus(tmpcmd, status) && !status.enabled()) + return true; + } + tmpcur.pop_back(); + } + } + return true; } case LFUN_MATH_DISPLAY: { bool enable = true; -- 2.39.2