--- sc/source/ui/view/tabvwsha.cxx 2005-10-17 23:13:34.000000000 +0530 +++ sc/source/ui/view/tabvwsha.cxx 2006-10-30 19:49:06.871771480 +0530 @@ -497,7 +497,44 @@ void ScTabViewShell::ExecuteCellFormatDl void ScTabViewShell::ExecuteInputDirect() { ScModule* pScMod = SC_MOD(); - if( !pScMod->IsFormulaMode() ) + BOOL bCallInputHandler = TRUE; + + if( pScMod->IsFormulaMode() ) + { + ScInputHandler *pHdl = pScMod->GetInputHdl(); + String sString = pHdl->GetEditString(); + bCallInputHandler = FALSE; + + if(!pHdl->GetSelIsRef() && sString.Len() > 1) + { + switch(sString.GetChar(0)) + { + case '+': + case '-': + case '=': + { + ScViewData *pViewData = GetViewData(); + ScDocument *pDoc = pViewData->GetDocument(); + ScAddress aPos(pViewData->GetCurPos()); + ScFormulaCell* pFCell = new ScFormulaCell( pDoc, aPos, sString ); + if(pFCell) + { + USHORT err = pFCell->GetErrCode(); + + if(!(err == errUnknownToken || err == errParameterExpected)) + bCallInputHandler = TRUE; + + delete pFCell; + } + } + break; + default: + break; + } + } + } + + if(bCallInputHandler) pScMod->InputEnterHandler(); }