X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Flyxfunc.C;h=5ca26ab25748ad788cd2e22aa87d8b57d28eb4ae;hb=358c483572b2d9fe3ba4ab511fd89af94ad27ce5;hp=b65a5e647274dfb51da3180cc754e9578de475f1;hpb=fb424bae1b693200ba4a506b2775929d25d77be3;p=lyx.git diff --git a/src/lyxfunc.C b/src/lyxfunc.C index b65a5e6472..5ca26ab257 100644 --- a/src/lyxfunc.C +++ b/src/lyxfunc.C @@ -379,6 +379,8 @@ FuncStatus LyXFunc::getStatus(kb_action action, } } + UpdatableInset * tli = owner->view()->theLockingInset(); + // I would really like to avoid having this switch and rather try to // encode this in the function itself. bool disable = false; @@ -413,27 +415,30 @@ FuncStatus LyXFunc::getStatus(kb_action action, break; case LFUN_LAYOUT_TABULAR: - disable = true; - if (owner->view()->theLockingInset()) { - disable = (owner->view()->theLockingInset()->lyxCode() != Inset::TABULAR_CODE) && - !owner->view()->theLockingInset()->getFirstLockingInsetOfType(Inset::TABULAR_CODE); - } + disable = !tli + || (tli->lyxCode() != Inset::TABULAR_CODE + && !tli->getFirstLockingInsetOfType(Inset::TABULAR_CODE)); + break; + + case LFUN_LAYOUT: + case LFUN_LAYOUT_PARAGRAPH: { + Inset * inset = TEXT(false)->cursor.par()->inInset(); + disable = inset && inset->forceDefaultParagraphs(inset); break; + } case LFUN_TABULAR_FEATURE: disable = true; - if (owner->view()->theLockingInset()) { + if (tli) { FuncStatus ret; //ret.disabled(true); - if (owner->view()->theLockingInset()->lyxCode() == Inset::TABULAR_CODE) { - ret = static_cast - (owner->view()->theLockingInset())-> - getStatus(argument); - } else if (owner->view()->theLockingInset()->getFirstLockingInsetOfType(Inset::TABULAR_CODE)) { + if (tli->lyxCode() == Inset::TABULAR_CODE) { + ret = static_cast(tli) + ->getStatus(argument); + } else if (tli->getFirstLockingInsetOfType(Inset::TABULAR_CODE)) { ret = static_cast - (owner->view()->theLockingInset()-> - getFirstLockingInsetOfType(Inset::TABULAR_CODE))-> - getStatus(argument); + (tli->getFirstLockingInsetOfType(Inset::TABULAR_CODE)) + ->getStatus(argument); } flag |= ret; disable = false; @@ -443,7 +448,8 @@ FuncStatus LyXFunc::getStatus(kb_action action, disable = true; ret = inset.getStatus(argument); - if (ret.onoff(true) || ret.onoff(false)) flag.setOnOff(false); + if (ret.onoff(true) || ret.onoff(false)) + flag.setOnOff(false); } break; @@ -471,13 +477,7 @@ FuncStatus LyXFunc::getStatus(kb_action action, disable = (TEXT(false)->getInset() == 0); break; - case LFUN_MATH_VALIGN: { - // I think this test can be simplified (Andre') - // mathcursor is != 0 iff we are in math mode - //Inset * tli = owner->view()->theLockingInset(); - //if (tli && (tli->lyxCode() == Inset::MATH_CODE - // || tli->lyxCode() == Inset::MATHMACRO_CODE)) { - // + case LFUN_MATH_VALIGN: if (mathcursor) { char align = mathcursor->valign(); if (align == '\0') { @@ -496,11 +496,8 @@ FuncStatus LyXFunc::getStatus(kb_action action, } else disable = true; break; - } - case LFUN_MATH_HALIGN: { - //Inset * tli = owner->view()->theLockingInset(); - //if (tli && (tli->lyxCode() == Inset::MATH_CODE - // || tli->lyxCode() == Inset::MATHMACRO_CODE)) { + + case LFUN_MATH_HALIGN: if (mathcursor) { char align = mathcursor->halign(); if (align == '\0') { @@ -519,9 +516,8 @@ FuncStatus LyXFunc::getStatus(kb_action action, } else disable = true; break; - } - case LFUN_MATH_MUTATE: { - Inset * tli = owner->view()->theLockingInset(); + + case LFUN_MATH_MUTATE: if (tli && (tli->lyxCode() == Inset::MATH_CODE)) { MathInsetTypes type = mathcursor->formula()->getType(); if (argument == "inline") { @@ -538,7 +534,6 @@ FuncStatus LyXFunc::getStatus(kb_action action, } else disable = true; break; - } // we just need to be in math mode to enable that case LFUN_MATH_SIZE: @@ -663,9 +658,7 @@ FuncStatus LyXFunc::getStatus(kb_action action, default: break; } - if (code != Inset::NO_CODE - && owner->view()->theLockingInset() - && !owner->view()->theLockingInset()->insetAllowed(code)) { + if (code != Inset::NO_CODE && tli && !tli->insetAllowed(code)) { disable = true; } @@ -1397,7 +1390,7 @@ string const LyXFunc::dispatch(kb_action action, string argument) case LFUN_GOTO_PARAGRAPH: { - istringstream istr(argument.c_str()); + istringstream istr(argument.c_str()); int id; istr >> id; @@ -1411,8 +1404,13 @@ string const LyXFunc::dispatch(kb_action action, string argument) << " found." << endl; } + if (owner->view()->theLockingInset()) + owner->view()->unlockInset(owner->view()->theLockingInset()); + if (par->inInset()) { + par->inInset()->edit(owner->view()); + } // Set the cursor - owner->view()->text->setCursor(owner->view(), par, 0); + owner->view()->getLyXText()->setCursor(owner->view(), par, 0); owner->view()->setState(); owner->showState();