mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-25 14:04:25 +00:00
Fix getStatus for math-mutate and math-display
Those two functions used two different hackish and buggy implementation to know when the function is disabled. Replace that by asking the containing inset whether it accepts inserting display math inset. Fixes bug #10033. (cherry picked from commit de5630a1562054cb969b106e35f84bfe1e99002a)
This commit is contained in:
parent
2766857f01
commit
fb5780d203
@ -1870,6 +1870,20 @@ void InsetMathHull::doDispatch(Cursor & cur, FuncRequest & cmd)
|
||||
}
|
||||
|
||||
|
||||
namespace {
|
||||
|
||||
bool allowDisplayMath(Cursor cur)
|
||||
{
|
||||
LATTEST(cur.depth() > 1);
|
||||
cur.pop();
|
||||
FuncStatus status;
|
||||
FuncRequest cmd(LFUN_MATH_DISPLAY);
|
||||
return cur.getStatus(cmd, status) && status.enabled();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
bool InsetMathHull::getStatus(Cursor & cur, FuncRequest const & cmd,
|
||||
FuncStatus & status) const
|
||||
{
|
||||
@ -1896,30 +1910,12 @@ bool InsetMathHull::getStatus(Cursor & cur, FuncRequest const & cmd,
|
||||
status.setOnOff(type_ == ht);
|
||||
status.setEnabled(isMutable(ht) && isMutable(type_));
|
||||
|
||||
if (ht != hullSimple && status.enabled()) {
|
||||
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();
|
||||
}
|
||||
}
|
||||
if (ht != hullSimple && status.enabled())
|
||||
status.setEnabled(allowDisplayMath(cur));
|
||||
return true;
|
||||
}
|
||||
case LFUN_MATH_DISPLAY: {
|
||||
bool enable = true;
|
||||
if (cur.depth() > 1) {
|
||||
Inset const & in = cur[cur.depth()-2].inset();
|
||||
if (in.lyxCode() == SCRIPT_CODE)
|
||||
enable = display() != Inline;
|
||||
}
|
||||
status.setEnabled(enable);
|
||||
status.setEnabled(display() != Inline || allowDisplayMath(cur));
|
||||
status.setOnOff(display() != Inline);
|
||||
return true;
|
||||
}
|
||||
|
@ -60,6 +60,9 @@ What's new
|
||||
- Display the correct column alignment and a better column spacing in AMS
|
||||
environments (bugs 1861, 9908).
|
||||
|
||||
- Disable properly toggling math diplay in places where it is not
|
||||
possible (bug 10033).
|
||||
|
||||
- Fix horizontal scrolling feature when inside a collapsable inset
|
||||
with several paragraphs.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user