From 8c505204f25b509daa586c2d308fb870325c59b9 Mon Sep 17 00:00:00 2001 From: Noel Grandin Date: Sun, 9 Aug 2020 11:59:30 +0200 Subject: loplugin:flatten in sc Change-Id: Iedb6ca37d1b006131d1fc77eca3303a12ccb60c9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/100401 Tested-by: Jenkins Reviewed-by: Noel Grandin --- sc/source/core/opencl/formulagroupcl.cxx | 7 +- sc/source/core/opencl/op_statistical.cxx | 1044 ++++++++++---------- sc/source/core/opencl/opbase.cxx | 31 +- sc/source/core/tool/formulalogger.cxx | 24 +- .../RandomNumberGeneratorDialog.cxx | 20 +- sc/source/ui/app/inputhdl.cxx | 74 +- sc/source/ui/dbgui/pfiltdlg.cxx | 122 +-- sc/source/ui/dbgui/tpsort.cxx | 227 ++--- sc/source/ui/dbgui/tpsubt.cxx | 82 +- sc/source/ui/docshell/docsh.cxx | 121 +-- sc/source/ui/drawfunc/fuconrec.cxx | 198 ++-- sc/source/ui/drawfunc/fudraw.cxx | 96 +- sc/source/ui/drawfunc/fuins1.cxx | 40 +- sc/source/ui/drawfunc/fuins2.cxx | 166 ++-- sc/source/ui/drawfunc/futext.cxx | 116 +-- sc/source/ui/drawfunc/futext3.cxx | 118 +-- sc/source/ui/drawfunc/mediash.cxx | 44 +- sc/source/ui/formdlg/formula.cxx | 268 ++--- sc/source/ui/namedlg/namedlg.cxx | 56 +- sc/source/ui/navipi/content.cxx | 254 ++--- sc/source/ui/navipi/navipi.cxx | 110 +-- sc/source/ui/optdlg/tpusrlst.cxx | 30 +- sc/source/ui/pagedlg/areasdlg.cxx | 48 +- sc/source/ui/pagedlg/scuitphfedit.cxx | 22 +- sc/source/ui/pagedlg/tphfedit.cxx | 64 +- sc/source/ui/undo/areasave.cxx | 24 +- sc/source/ui/undo/undobase.cxx | 70 +- sc/source/ui/undo/undoblk.cxx | 121 ++- sc/source/ui/undo/undocell.cxx | 22 +- sc/source/ui/undo/undodat.cxx | 30 +- sc/source/ui/undo/undoutil.cxx | 24 +- 31 files changed, 1836 insertions(+), 1837 deletions(-) (limited to 'sc') diff --git a/sc/source/core/opencl/formulagroupcl.cxx b/sc/source/core/opencl/formulagroupcl.cxx index 459de3fae64b..59e4ff1480bf 100644 --- a/sc/source/core/opencl/formulagroupcl.cxx +++ b/sc/source/core/opencl/formulagroupcl.cxx @@ -2737,11 +2737,12 @@ DynamicKernelSoPArguments::DynamicKernelSoPArguments(const ScCalcConfig& config, // explicitly claims it will handle this situation properly. if( pDVR->GetArrays().size() > 1 ) { - if( pCodeGen->canHandleMultiVector()) - SAL_INFO("sc.opencl", "multi-column DoubleRef"); - else + if( !pCodeGen->canHandleMultiVector()) throw UnhandledToken(("Function '" + pCodeGen->BinFuncName() + "' cannot handle multi-column DoubleRef").c_str(), __FILE__, __LINE__); + + SAL_INFO("sc.opencl", "multi-column DoubleRef"); + } // FIXME: The Right Thing to do would be to compare the accumulated kernel diff --git a/sc/source/core/opencl/op_statistical.cxx b/sc/source/core/opencl/op_statistical.cxx index 94415b39e41a..273f37dcc204 100644 --- a/sc/source/core/opencl/op_statistical.cxx +++ b/sc/source/core/opencl/op_statistical.cxx @@ -494,167 +494,73 @@ void OpTTest::GenSlidingWindowFunction(std::stringstream &ss, ss << "}\n"; return ; } - if(vSubArguments.size() == 4) + if(vSubArguments.size() != 4) + return; + + FormulaToken *pCur = vSubArguments[0]->GetFormulaToken(); + FormulaToken *pCur1 = vSubArguments[1]->GetFormulaToken(); + FormulaToken *pCur2 = vSubArguments[2]->GetFormulaToken(); + FormulaToken *pCur3 = vSubArguments[3]->GetFormulaToken(); + assert(pCur); + assert(pCur1); + assert(pCur2); + assert(pCur3); + if(ocPush == vSubArguments[2]->GetFormulaToken()->GetOpCode()) { - FormulaToken *pCur = vSubArguments[0]->GetFormulaToken(); - FormulaToken *pCur1 = vSubArguments[1]->GetFormulaToken(); - FormulaToken *pCur2 = vSubArguments[2]->GetFormulaToken(); - FormulaToken *pCur3 = vSubArguments[3]->GetFormulaToken(); - assert(pCur); - assert(pCur1); - assert(pCur2); - assert(pCur3); - if(ocPush == vSubArguments[2]->GetFormulaToken()->GetOpCode()) + if(pCur2->GetType() == formula::svSingleVectorRef) { - if(pCur2->GetType() == formula::svSingleVectorRef) - { - const formula::SingleVectorRefToken* pSVR = - static_cast< const formula::SingleVectorRefToken*>(pCur2); - ss << " if (gid0 < " << pSVR->GetArrayLength() << ")\n"; - ss << " {\n"; - ss << " mode = " ; - ss << vSubArguments[2]->GenSlidingWindowDeclRef() << ";\n"; - ss << " if (isnan(mode))\n"; - ss << " mode = 0.0;\n"; - ss << " else\n"; - ss << " mode = floor(mode);\n"; - ss << " }\n"; - } - else if(pCur2->GetType() == formula::svDouble) - { - ss << " mode = floor(convert_double("; - ss << pCur2->GetDouble() << "));\n"; - } - else - { - ss << " return DBL_MAX;\n"; - ss << "}\n"; - return ; - } + const formula::SingleVectorRefToken* pSVR = + static_cast< const formula::SingleVectorRefToken*>(pCur2); + ss << " if (gid0 < " << pSVR->GetArrayLength() << ")\n"; + ss << " {\n"; + ss << " mode = " ; + ss << vSubArguments[2]->GenSlidingWindowDeclRef() << ";\n"; + ss << " if (isnan(mode))\n"; + ss << " mode = 0.0;\n"; + ss << " else\n"; + ss << " mode = floor(mode);\n"; + ss << " }\n"; } - else + else if(pCur2->GetType() == formula::svDouble) { - ss << " mode = floor(" ; - ss << vSubArguments[2]->GenSlidingWindowDeclRef() << ");\n"; + ss << " mode = floor(convert_double("; + ss << pCur2->GetDouble() << "));\n"; } - ss << " if(!(mode == 1.0 || mode == 2.0))\n"; - ss << " return DBL_MAX;\n"; - if(ocPush==vSubArguments[3]->GetFormulaToken()->GetOpCode()) + else { - if(pCur3->GetType() == formula::svSingleVectorRef) - { - const formula::SingleVectorRefToken* pSVR = - static_cast< const formula::SingleVectorRefToken*>(pCur3); - assert(pSVR); - ss << " if (gid0 < " << pSVR->GetArrayLength() << ")\n"; - ss << " {\n"; - ss << " if (isnan("; - ss << vSubArguments[3]->GenSlidingWindowDeclRef() << "))\n"; - ss << " type=0.0;\n"; - ss << " else\n"; - ss << " type=floor("; - ss << vSubArguments[3]->GenSlidingWindowDeclRef() << ");\n"; - ss << " }\n"; - } - else if(pCur3->GetType() == formula::svDouble) - { - ss << " type = floor(convert_double(" << pCur3->GetDouble() << - "));\n"; - } - else - { - ss << " return DBL_MAX;\n"; - ss << "}\n"; - return ; - } + ss << " return DBL_MAX;\n"; + ss << "}\n"; + return ; } - else + } + else + { + ss << " mode = floor(" ; + ss << vSubArguments[2]->GenSlidingWindowDeclRef() << ");\n"; + } + ss << " if(!(mode == 1.0 || mode == 2.0))\n"; + ss << " return DBL_MAX;\n"; + if(ocPush==vSubArguments[3]->GetFormulaToken()->GetOpCode()) + { + if(pCur3->GetType() == formula::svSingleVectorRef) { - ss << " type=floor("; + const formula::SingleVectorRefToken* pSVR = + static_cast< const formula::SingleVectorRefToken*>(pCur3); + assert(pSVR); + ss << " if (gid0 < " << pSVR->GetArrayLength() << ")\n"; + ss << " {\n"; + ss << " if (isnan("; + ss << vSubArguments[3]->GenSlidingWindowDeclRef() << "))\n"; + ss << " type=0.0;\n"; + ss << " else\n"; + ss << " type=floor("; ss << vSubArguments[3]->GenSlidingWindowDeclRef() << ");\n"; + ss << " }\n"; } - ss << " if(!(type == 1.0||type == 2.0||type == 3.0))\n"; - ss << " return DBL_MAX;\n"; - - if(pCur->GetType() == formula::svDoubleVectorRef && - pCur1->GetType() == formula::svDoubleVectorRef) + else if(pCur3->GetType() == formula::svDouble) { - const formula::DoubleVectorRefToken* pDVR = - static_cast(pCur); - const formula::DoubleVectorRefToken* pDVR1 = - static_cast(pCur1); - - size_t nCurWindowSize = pDVR->GetRefRowSize(); - size_t nCurWindowSize1 = pDVR1->GetRefRowSize(); - - if(nCurWindowSize == nCurWindowSize1) - { - ss << " if(type == 1.0)\n"; - ss << " {\n"; - ss << " for (int i = "; - if ((!pDVR->IsStartFixed() && pDVR->IsEndFixed()) && - (!pDVR1->IsStartFixed() && pDVR1->IsEndFixed())) - { - ss << "gid0; i < " << pDVR->GetArrayLength(); - ss << " && i < " << nCurWindowSize << "; i++)\n"; - ss << " {\n"; - } - else if ((pDVR->IsStartFixed() && !pDVR->IsEndFixed()) && - (pDVR1->IsStartFixed() && !pDVR1->IsEndFixed())) - { - ss << "0; i < " << pDVR->GetArrayLength(); - ss << " && i < gid0+"<< nCurWindowSize << "; i++)\n"; - ss << " {\n"; - } - else if ((!pDVR->IsStartFixed() && !pDVR->IsEndFixed()) && - (!pDVR1->IsStartFixed() && !pDVR1->IsEndFixed())) - { - ss << "0; i + gid0 < " << pDVR->GetArrayLength(); - ss << " && i < " << nCurWindowSize << "; i++)\n"; - ss << " {\n"; - } - else if ((pDVR->IsStartFixed() && pDVR->IsEndFixed()) && - (pDVR1->IsStartFixed() && pDVR1->IsEndFixed())) - { - ss << "0; i < " << nCurWindowSize << "; i++)\n"; - ss << " {\n"; - } - else - { - ss << "0; i < " << nCurWindowSize << "; i++)\n"; - ss << " {\n"; - ss << " break;\n"; - ss << " }"; - ss << " return DBL_MAX;\n"; - ss << " }\n"; - ss << "}\n"; - return ; - } - - ss << " arg1 = "; - ss << vSubArguments[0]->GenSlidingWindowDeclRef(true) << ";\n"; - ss << " arg2 = "; - ss << vSubArguments[1]->GenSlidingWindowDeclRef(true) << ";\n"; - ss << " if (isnan(arg1)||isnan(arg2))\n"; - ss << " continue;\n"; - ss << " fSum1 += arg1;\n"; - ss << " fSum2 += arg2;\n"; - ss << " fSumSqr1 += (arg1 - arg2)*(arg1 - arg2);\n"; - ss << " fCount1 += 1;\n"; - ss << " }\n"; - ss << " if(fCount1 < 1.0)\n"; - ss << " return DBL_MAX;\n"; - ss << " fT = sqrt(fCount1-1.0) * fabs(fSum1 - fSum2)\n"; - ss << " /sqrt(fCount1 * fSumSqr1 - (fSum1-fSum2)\n"; - ss << " *(fSum1-fSum2));\n"; - ss << " fF = fCount1 - 1.0;\n"; - } - else - { - ss << " return DBL_MAX;\n"; - ss << "}\n"; - return ; - } + ss << " type = floor(convert_double(" << pCur3->GetDouble() << + "));\n"; } else { @@ -662,131 +568,225 @@ void OpTTest::GenSlidingWindowFunction(std::stringstream &ss, ss << "}\n"; return ; } - ss << " }\n"; - ss << " if(type == 2.0 || type == 3.0)\n"; - ss << " {\n"; + } + else + { + ss << " type=floor("; + ss << vSubArguments[3]->GenSlidingWindowDeclRef() << ");\n"; + } + ss << " if(!(type == 1.0||type == 2.0||type == 3.0))\n"; + ss << " return DBL_MAX;\n"; - if(pCur->GetType() == formula::svDoubleVectorRef && - pCur1->GetType() == formula::svDoubleVectorRef) - { - const formula::DoubleVectorRefToken* pDVR = - static_cast(pCur); - const formula::DoubleVectorRefToken* pDVR1 = - static_cast(pCur1); + if(pCur->GetType() == formula::svDoubleVectorRef && + pCur1->GetType() == formula::svDoubleVectorRef) + { + const formula::DoubleVectorRefToken* pDVR = + static_cast(pCur); + const formula::DoubleVectorRefToken* pDVR1 = + static_cast(pCur1); + + size_t nCurWindowSize = pDVR->GetRefRowSize(); + size_t nCurWindowSize1 = pDVR1->GetRefRowSize(); - size_t nCurWindowSize = pDVR->GetRefRowSize(); - size_t nCurWindowSize1 = pDVR1->GetRefRowSize(); + if(nCurWindowSize == nCurWindowSize1) + { + ss << " if(type == 1.0)\n"; + ss << " {\n"; ss << " for (int i = "; - if (!pDVR->IsStartFixed() && pDVR->IsEndFixed()) + if ((!pDVR->IsStartFixed() && pDVR->IsEndFixed()) && + (!pDVR1->IsStartFixed() && pDVR1->IsEndFixed())) { ss << "gid0; i < " << pDVR->GetArrayLength(); ss << " && i < " << nCurWindowSize << "; i++)\n"; ss << " {\n"; } - else if (pDVR->IsStartFixed() && !pDVR->IsEndFixed()) + else if ((pDVR->IsStartFixed() && !pDVR->IsEndFixed()) && + (pDVR1->IsStartFixed() && !pDVR1->IsEndFixed())) { ss << "0; i < " << pDVR->GetArrayLength(); ss << " && i < gid0+"<< nCurWindowSize << "; i++)\n"; ss << " {\n"; } - else if (!pDVR->IsStartFixed() && !pDVR->IsEndFixed()) + else if ((!pDVR->IsStartFixed() && !pDVR->IsEndFixed()) && + (!pDVR1->IsStartFixed() && !pDVR1->IsEndFixed())) { ss << "0; i + gid0 < " << pDVR->GetArrayLength(); ss << " && i < " << nCurWindowSize << "; i++)\n"; ss << " {\n"; } - else + else if ((pDVR->IsStartFixed() && pDVR->IsEndFixed()) && + (pDVR1->IsStartFixed() && pDVR1->IsEndFixed())) { ss << "0; i < " << nCurWindowSize << "; i++)\n"; ss << " {\n"; } - - ss << " arg1 = "; - ss << vSubArguments[0]->GenSlidingWindowDeclRef(true) << ";\n"; - ss << " if (isnan(arg1))\n"; - ss << " continue;\n"; - ss << " fSum1 += arg1;\n"; - ss << " fSumSqr1 += arg1 * arg1;\n"; - ss << " fCount1 += 1;\n"; - ss << " }\n"; - - ss << " for (int i = "; - if (!pDVR1->IsStartFixed() && pDVR1->IsEndFixed()) - { - ss << "gid0; i < " << pDVR1->GetArrayLength(); - ss << " && i < " << nCurWindowSize1 << "; i++)\n"; - ss << " {\n"; - } - else if (pDVR1->IsStartFixed() && !pDVR1->IsEndFixed()) - { - ss << "0; i < " << pDVR1->GetArrayLength(); - ss << " && i < gid0+"<< nCurWindowSize1 << "; i++)\n"; - ss << " {\n"; - } - else if (!pDVR1->IsStartFixed() && !pDVR1->IsEndFixed()) - { - ss << "0; i + gid0 < " << pDVR1->GetArrayLength(); - ss << " && i < " << nCurWindowSize1 << "; i++)\n"; - ss << " {\n"; - } else { - ss << "0; i < " << nCurWindowSize1 << "; i++)\n"; + ss << "0; i < " << nCurWindowSize << "; i++)\n"; ss << " {\n"; + ss << " break;\n"; + ss << " }"; + ss << " return DBL_MAX;\n"; + ss << " }\n"; + ss << "}\n"; + return ; } + + ss << " arg1 = "; + ss << vSubArguments[0]->GenSlidingWindowDeclRef(true) << ";\n"; ss << " arg2 = "; ss << vSubArguments[1]->GenSlidingWindowDeclRef(true) << ";\n"; - ss << " if (isnan(arg2))\n"; + ss << " if (isnan(arg1)||isnan(arg2))\n"; ss << " continue;\n"; + ss << " fSum1 += arg1;\n"; ss << " fSum2 += arg2;\n"; - ss << " fSumSqr2 += arg2 * arg2;\n"; - ss << " fCount2 += 1;\n"; + ss << " fSumSqr1 += (arg1 - arg2)*(arg1 - arg2);\n"; + ss << " fCount1 += 1;\n"; ss << " }\n"; + ss << " if(fCount1 < 1.0)\n"; + ss << " return DBL_MAX;\n"; + ss << " fT = sqrt(fCount1-1.0) * fabs(fSum1 - fSum2)\n"; + ss << " /sqrt(fCount1 * fSumSqr1 - (fSum1-fSum2)\n"; + ss << " *(fSum1-fSum2));\n"; + ss << " fF = fCount1 - 1.0;\n"; } else { - ss << " return DBL_MAX;\n"; - ss << " }\n"; + ss << " return DBL_MAX;\n"; ss << "}\n"; return ; } - ss << " if (fCount1 < 2.0 || fCount2 < 2.0)\n"; - ss << " return DBL_MAX;\n"; - ss << " }\n"; - ss << " if(type == 3.0)\n"; - ss << " {\n"; - ss << " double fS1 = (fSumSqr1-fSum1*fSum1/fCount1)\n"; - ss << " /(fCount1-1.0)/fCount1;\n"; - ss << " double fS2 = (fSumSqr2-fSum2*fSum2/fCount2)\n"; - ss << " /(fCount2-1.0)/fCount2;\n"; - ss << " if (fS1 + fS2 == 0.0)\n"; - ss << " return DBL_MAX;\n"; - ss << " fT = fabs(fSum1/fCount1 - fSum2/fCount2)\n"; - ss << " /sqrt(fS1+fS2);\n"; - ss << " double c = fS1/(fS1+fS2);\n"; - ss << " fF = 1.0/(c*c/(fCount1-1.0)+(1.0-c)*(1.0-c)\n"; - ss << " /(fCount2-1.0));\n"; - ss << " }\n"; - ss << " if(type == 2.0)\n"; - ss << " {\n"; - ss << " double fS1 = (fSumSqr1 - fSum1*fSum1/fCount1)\n"; - ss << " /(fCount1 - 1.0);\n"; - ss << " double fS2 = (fSumSqr2 - fSum2*fSum2/fCount2)\n"; - ss << " /(fCount2 - 1.0);\n"; - ss << " fT = fabs( fSum1/fCount1 - fSum2/fCount2 )\n"; - ss << " /sqrt( (fCount1-1.0)*fS1 + (fCount2-1.0)*fS2 )\n"; - ss << " *sqrt( fCount1*fCount2*(fCount1+fCount2-2)\n"; - ss << " /(fCount1+fCount2) );\n"; - ss << " fF = fCount1 + fCount2 - 2;\n"; - ss << " }\n"; + } + else + { + ss << " return DBL_MAX;\n"; + ss << "}\n"; + return ; + } + ss << " }\n"; + ss << " if(type == 2.0 || type == 3.0)\n"; + ss << " {\n"; - ss << " double tdist=GetTDist(fT, fF);\n"; - ss << " if (mode==1)\n"; - ss << " return tdist;\n"; - ss << " else\n"; - ss << " return 2.0*tdist;\n"; + if(pCur->GetType() == formula::svDoubleVectorRef && + pCur1->GetType() == formula::svDoubleVectorRef) + { + const formula::DoubleVectorRefToken* pDVR = + static_cast(pCur); + const formula::DoubleVectorRefToken* pDVR1 = + static_cast(pCur1); + + size_t nCurWindowSize = pDVR->GetRefRowSize(); + size_t nCurWindowSize1 = pDVR1->GetRefRowSize(); + ss << " for (int i = "; + if (!pDVR->IsStartFixed() && pDVR->IsEndFixed()) + { + ss << "gid0; i < " << pDVR->GetArrayLength(); + ss << " && i < " << nCurWindowSize << "; i++)\n"; + ss << " {\n"; + } + else if (pDVR->IsStartFixed() && !pDVR->IsEndFixed()) + { + ss << "0; i < " << pDVR->GetArrayLength(); + ss << " && i < gid0+"<< nCurWindowSize << "; i++)\n"; + ss << " {\n"; + } + else if (!pDVR->IsStartFixed() && !pDVR->IsEndFixed()) + { + ss << "0; i + gid0 < " << pDVR->GetArrayLength(); + ss << " && i < " << nCurWindowSize << "; i++)\n"; + ss << " {\n"; + } + else + { + ss << "0; i < " << nCurWindowSize << "; i++)\n"; + ss << " {\n"; + } + + ss << " arg1 = "; + ss << vSubArguments[0]->GenSlidingWindowDeclRef(true) << ";\n"; + ss << " if (isnan(arg1))\n"; + ss << " continue;\n"; + ss << " fSum1 += arg1;\n"; + ss << " fSumSqr1 += arg1 * arg1;\n"; + ss << " fCount1 += 1;\n"; + ss << " }\n"; + + ss << " for (int i = "; + if (!pDVR1->IsStartFixed() && pDVR1->IsEndFixed()) + { + ss << "gid0; i < " << pDVR1->GetArrayLength(); + ss << " && i < " << nCurWindowSize1 << "; i++)\n"; + ss << " {\n"; + } + else if (pDVR1->IsStartFixed() && !pDVR1->IsEndFixed()) + { + ss << "0; i < " << pDVR1->GetArrayLength(); + ss << " && i < gid0+"<< nCurWindowSize1 << "; i++)\n"; + ss << " {\n"; + } + else if (!pDVR1->IsStartFixed() && !pDVR1->IsEndFixed()) + { + ss << "0; i + gid0 < " << pDVR1->GetArrayLength(); + ss << " && i < " << nCurWindowSize1 << "; i++)\n"; + ss << " {\n"; + } + else + { + ss << "0; i < " << nCurWindowSize1 << "; i++)\n"; + ss << " {\n"; + } + ss << " arg2 = "; + ss << vSubArguments[1]->GenSlidingWindowDeclRef(true) << ";\n"; + ss << " if (isnan(arg2))\n"; + ss << " continue;\n"; + ss << " fSum2 += arg2;\n"; + ss << " fSumSqr2 += arg2 * arg2;\n"; + ss << " fCount2 += 1;\n"; + ss << " }\n"; + } + else + { + ss << " return DBL_MAX;\n"; + ss << " }\n"; ss << "}\n"; + return ; } + ss << " if (fCount1 < 2.0 || fCount2 < 2.0)\n"; + ss << " return DBL_MAX;\n"; + ss << " }\n"; + ss << " if(type == 3.0)\n"; + ss << " {\n"; + ss << " double fS1 = (fSumSqr1-fSum1*fSum1/fCount1)\n"; + ss << " /(fCount1-1.0)/fCount1;\n"; + ss << " double fS2 = (fSumSqr2-fSum2*fSum2/fCount2)\n"; + ss << " /(fCount2-1.0)/fCount2;\n"; + ss << " if (fS1 + fS2 == 0.0)\n"; + ss << " return DBL_MAX;\n"; + ss << " fT = fabs(fSum1/fCount1 - fSum2/fCount2)\n"; + ss << " /sqrt(fS1+fS2);\n"; + ss << " double c = fS1/(fS1+fS2);\n"; + ss << " fF = 1.0/(c*c/(fCount1-1.0)+(1.0-c)*(1.0-c)\n"; + ss << " /(fCount2-1.0));\n"; + ss << " }\n"; + ss << " if(type == 2.0)\n"; + ss << " {\n"; + ss << " double fS1 = (fSumSqr1 - fSum1*fSum1/fCount1)\n"; + ss << " /(fCount1 - 1.0);\n"; + ss << " double fS2 = (fSumSqr2 - fSum2*fSum2/fCount2)\n"; + ss << " /(fCount2 - 1.0);\n"; + ss << " fT = fabs( fSum1/fCount1 - fSum2/fCount2 )\n"; + ss << " /sqrt( (fCount1-1.0)*fS1 + (fCount2-1.0)*fS2 )\n"; + ss << " *sqrt( fCount1*fCount2*(fCount1+fCount2-2)\n"; + ss << " /(fCount1+fCount2) );\n"; + ss << " fF = fCount1 + fCount2 - 2;\n"; + ss << " }\n"; + + ss << " double tdist=GetTDist(fT, fF);\n"; + ss << " if (mode==1)\n"; + ss << " return tdist;\n"; + ss << " else\n"; + ss << " return 2.0*tdist;\n"; + ss << "}\n"; } void OpVarP::GenSlidingWindowFunction(std::stringstream &ss, const std::string &sSymName, SubArguments &vSubArguments) @@ -2572,122 +2572,121 @@ void OpSlope::GenSlidingWindowFunction(std::stringstream &ss, FormulaToken *pCur1 = vSubArguments[0]->GetFormulaToken(); assert(pCur); assert(pCur1); - if (pCur->GetType() == formula::svDoubleVectorRef&& - pCur1->GetType() == formula::svDoubleVectorRef) + if (pCur->GetType() != formula::svDoubleVectorRef || + pCur1->GetType() != formula::svDoubleVectorRef) { - const formula::DoubleVectorRefToken* pDVR = - static_cast(pCur); - const formula::DoubleVectorRefToken* pDVR1 = - static_cast(pCur1); - - size_t nCurWindowSize = pDVR->GetRefRowSize(); - size_t nCurWindowSize1 = pDVR1->GetRefRowSize(); - size_t arrayLength = pDVR->GetArrayLength()< - pDVR1->GetArrayLength() ? pDVR->GetArrayLength(): - pDVR1->GetArrayLength(); - if(nCurWindowSize != nCurWindowSize1) - throw Unhandled(__FILE__, __LINE__); - ss << " for (int i = "; - if ((!pDVR->IsStartFixed() && pDVR->IsEndFixed()) - &&(!pDVR1->IsStartFixed() && pDVR1->IsEndFixed())) - { - ss << "gid0; i < " << arrayLength; - ss << " && i < " << nCurWindowSize << "; i++)\n"; - ss << " {\n"; - } - else if ((pDVR->IsStartFixed() && !pDVR->IsEndFixed()) - &&(pDVR1->IsStartFixed() && !pDVR1->IsEndFixed())) - { - ss << "0; i < " << arrayLength ; - ss << " && i < gid0+" << nCurWindowSize << "; i++)\n"; - ss << " {\n"; - } - else if ((!pDVR->IsStartFixed() && !pDVR->IsEndFixed()) - &&(!pDVR1->IsStartFixed() && !pDVR1->IsEndFixed())) - { - ss << "0; i + gid0 < " << arrayLength; - ss << " && i < " << nCurWindowSize << "; i++)\n"; - ss << " {\n"; - } - else if ((pDVR->IsStartFixed() && pDVR->IsEndFixed()) - &&(pDVR1->IsStartFixed() && pDVR1->IsEndFixed())) - { - ss << "0; i < " << arrayLength << "; i++)\n"; - ss << " {\n"; - } - else - { - throw Unhandled(__FILE__, __LINE__); - } + throw Unhandled(__FILE__, __LINE__); + } - ss << " argX = "; - ss << vSubArguments[1]->GenSlidingWindowDeclRef() << ";\n"; - ss << " argY = "; - ss << vSubArguments[0]->GenSlidingWindowDeclRef() << ";\n"; - ss << " if (isnan(argX) || isnan(argY))\n"; - ss << " continue;\n"; - ss << " fSumX += argX;\n"; - ss << " fSumY += argY;\n"; - ss << " fCount += 1.0;\n"; - ss << " }\n"; + const formula::DoubleVectorRefToken* pDVR = + static_cast(pCur); + const formula::DoubleVectorRefToken* pDVR1 = + static_cast(pCur1); - ss << " if (fCount < 1.0)\n"; - ss << " return CreateDoubleError(NoValue);\n"; - ss << " else\n"; + size_t nCurWindowSize = pDVR->GetRefRowSize(); + size_t nCurWindowSize1 = pDVR1->GetRefRowSize(); + size_t arrayLength = pDVR->GetArrayLength()< + pDVR1->GetArrayLength() ? pDVR->GetArrayLength(): + pDVR1->GetArrayLength(); + if(nCurWindowSize != nCurWindowSize1) + throw Unhandled(__FILE__, __LINE__); + ss << " for (int i = "; + if ((!pDVR->IsStartFixed() && pDVR->IsEndFixed()) + &&(!pDVR1->IsStartFixed() && pDVR1->IsEndFixed())) + { + ss << "gid0; i < " << arrayLength; + ss << " && i < " << nCurWindowSize << "; i++)\n"; ss << " {\n"; - ss << " fMeanX = fSumX * pow(fCount,-1.0);\n"; - ss << " fMeanY = fSumY * pow(fCount,-1.0);\n"; + } + else if ((pDVR->IsStartFixed() && !pDVR->IsEndFixed()) + &&(pDVR1->IsStartFixed() && !pDVR1->IsEndFixed())) + { + ss << "0; i < " << arrayLength ; + ss << " && i < gid0+" << nCurWindowSize << "; i++)\n"; + ss << " {\n"; + } + else if ((!pDVR->IsStartFixed() && !pDVR->IsEndFixed()) + &&(!pDVR1->IsStartFixed() && !pDVR1->IsEndFixed())) + { + ss << "0; i + gid0 < " << arrayLength; + ss << " && i < " << nCurWindowSize << "; i++)\n"; + ss << " {\n"; + } + else if ((pDVR->IsStartFixed() && pDVR->IsEndFixed()) + &&(pDVR1->IsStartFixed() && pDVR1->IsEndFixed())) + { + ss << "0; i < " << arrayLength << "; i++)\n"; + ss << " {\n"; + } + else + { + throw Unhandled(__FILE__, __LINE__); + } - ss << " for (int i = "; - if ((!pDVR->IsStartFixed() && pDVR->IsEndFixed()) - &&(!pDVR1->IsStartFixed() && pDVR1->IsEndFixed())) - { - ss << "gid0; i < " << arrayLength; - ss << " && i < " << nCurWindowSize << "; i++)\n"; - ss << " {\n"; - } - else if ((pDVR->IsStartFixed() && !pDVR->IsEndFixed()) - &&(pDVR1->IsStartFixed() && !pDVR1->IsEndFixed())) - { - ss << "0; i < " << arrayLength ; - ss << " && i < gid0+" << nCurWindowSize << "; i++)\n"; - ss << " {\n"; - } - else if ((!pDVR->IsStartFixed() && !pDVR->IsEndFixed()) - &&(!pDVR1->IsStartFixed() && !pDVR1->IsEndFixed())) - { - ss << "0; i + gid0 < " << arrayLength; - ss << " && i < " << nCurWindowSize << "; i++)\n"; - ss << " {\n"; - } - else - { - ss << "0; i < " << arrayLength << "; i++)\n"; - ss << " {\n"; - } + ss << " argX = "; + ss << vSubArguments[1]->GenSlidingWindowDeclRef() << ";\n"; + ss << " argY = "; + ss << vSubArguments[0]->GenSlidingWindowDeclRef() << ";\n"; + ss << " if (isnan(argX) || isnan(argY))\n"; + ss << " continue;\n"; + ss << " fSumX += argX;\n"; + ss << " fSumY += argY;\n"; + ss << " fCount += 1.0;\n"; + ss << " }\n"; - ss << " argX = "; - ss << vSubArguments[1]->GenSlidingWindowDeclRef() << ";\n"; - ss << " argY = "; - ss << vSubArguments[0]->GenSlidingWindowDeclRef() << ";\n"; - ss << " if (isnan(argX) || isnan(argY))\n"; - ss << " continue;\n"; - ss << " fSumDeltaXDeltaY += (argX-fMeanX)*(argY-fMeanY);\n"; - ss << " fSumSqrDeltaX += (argX-fMeanX) * (argX-fMeanX);\n"; - ss << " }\n"; - ss << " if(fSumSqrDeltaX == 0.0)\n"; - ss << " return CreateDoubleError(DivisionByZero);\n"; - ss << " else\n"; + ss << " if (fCount < 1.0)\n"; + ss << " return CreateDoubleError(NoValue);\n"; + ss << " else\n"; + ss << " {\n"; + ss << " fMeanX = fSumX * pow(fCount,-1.0);\n"; + ss << " fMeanY = fSumY * pow(fCount,-1.0);\n"; + + ss << " for (int i = "; + if ((!pDVR->IsStartFixed() && pDVR->IsEndFixed()) + &&(!pDVR1->IsStartFixed() && pDVR1->IsEndFixed())) + { + ss << "gid0; i < " << arrayLength; + ss << " && i < " << nCurWindowSize << "; i++)\n"; + ss << " {\n"; + } + else if ((pDVR->IsStartFixed() && !pDVR->IsEndFixed()) + &&(pDVR1->IsStartFixed() && !pDVR1->IsEndFixed())) + { + ss << "0; i < " << arrayLength ; + ss << " && i < gid0+" << nCurWindowSize << "; i++)\n"; + ss << " {\n"; + } + else if ((!pDVR->IsStartFixed() && !pDVR->IsEndFixed()) + &&(!pDVR1->IsStartFixed() && !pDVR1->IsEndFixed())) + { + ss << "0; i + gid0 < " << arrayLength; + ss << " && i < " << nCurWindowSize << "; i++)\n"; ss << " {\n"; - ss << " return fSumDeltaXDeltaY*pow(fSumSqrDeltaX,-1.0);\n"; - ss << " }\n"; - ss << " }\n"; - ss << "}\n"; } else { - throw Unhandled(__FILE__, __LINE__); + ss << "0; i < " << arrayLength << "; i++)\n"; + ss << " {\n"; } + + ss << " argX = "; + ss << vSubArguments[1]->GenSlidingWindowDeclRef() << ";\n"; + ss << " argY = "; + ss << vSubArguments[0]->GenSlidingWindowDeclRef() << ";\n"; + ss << " if (isnan(argX) || isnan(argY))\n"; + ss << " continue;\n"; + ss << " fSumDeltaXDeltaY += (argX-fMeanX)*(argY-fMeanY);\n"; + ss << " fSumSqrDeltaX += (argX-fMeanX) * (argX-fMeanX);\n"; + ss << " }\n"; + ss << " if(fSumSqrDeltaX == 0.0)\n"; + ss << " return CreateDoubleError(DivisionByZero);\n"; + ss << " else\n"; + ss << " {\n"; + ss << " return fSumDeltaXDeltaY*pow(fSumSqrDeltaX,-1.0);\n"; + ss << " }\n"; + ss << " }\n"; + ss << "}\n"; + } void OpSTEYX::GenSlidingWindowFunction(std::stringstream &ss, const std::string &sSymName, SubArguments &vSubArguments) @@ -6874,193 +6873,192 @@ void OpCovar::GenSlidingWindowFunction(std::stringstream& ss, static_cast(pCurY); size_t nCurWindowSizeX = pCurDVRX->GetRefRowSize(); size_t nCurWindowSizeY = pCurDVRY->GetRefRowSize(); - if(nCurWindowSizeX == nCurWindowSizeY) - { - ss << " for( "; - if (!pCurDVRX->IsStartFixed() && pCurDVRX->IsEndFixed()) { - ss << "int i = gid0; i < " << nCurWindowSizeX; - ss << " && i < " << pCurDVRX->GetArrayLength() << " && i < "; - ss << pCurDVRY->GetArrayLength() << "; i++){\n"; - ss << " if(isnan("; - ss << vSubArguments[0]->GenSlidingWindowDeclRef() << ") ||"; - ss << " isnan("<< vSubArguments[1]->GenSlidingWindowDeclRef(); - ss << ")) {\n"; - ss << " arg0 = 0.0;\n"; - ss << " arg1 = 0.0;\n"; - ss << " --cnt;\n"; - ss << " }\n"; - ss << "else{\n"; - ss << " arg0 = "; - ss << vSubArguments[0]->GenSlidingWindowDeclRef() << ";\n"; - ss << " arg1 = "; - ss << vSubArguments[1]->GenSlidingWindowDeclRef() << ";\n"; - ss << "}\n"; - ss << " ++cnt;\n"; - ss << " vSum0 += arg0;\n"; - ss << " vSum1 += arg1;\n"; - ss << " }\n"; - } - else if (pCurDVRX->IsStartFixed() && !pCurDVRX->IsEndFixed()) { - ss << "int i = 0; i < gid0 + " << nCurWindowSizeX << " && "; - ss << " i < " << pCurDVRX->GetArrayLength() << " && "; - ss << " i < " << pCurDVRY->GetArrayLength() << "; i++) {\n"; - ss << " if(isnan("; - ss << vSubArguments[0]->GenSlidingWindowDeclRef() << ") ||"; - ss << " isnan(" << vSubArguments[1]->GenSlidingWindowDeclRef(); - ss << ")) {\n"; - ss << " arg0 = 0.0;\n"; - ss << " arg1 = 0.0;\n"; - ss << " --cnt;\n"; - ss << " }\n"; - ss << "else{\n"; - ss << " arg0 = "; - ss << vSubArguments[0]->GenSlidingWindowDeclRef() << ";\n"; - ss << " arg1 = "; - ss << vSubArguments[1]->GenSlidingWindowDeclRef() << ";}\n"; - ss << " ++cnt;\n"; - ss << " vSum0 += arg0;\n"; - ss << " vSum1 += arg1;\n"; - ss << " }\n"; - } - else if (pCurDVRX->IsStartFixed() && pCurDVRX->IsEndFixed()) { - ss << "int i = 0; i < " << nCurWindowSizeX << " && i < "; - ss << pCurDVRX->GetArrayLength() << " && i < "; - ss << pCurDVRY->GetArrayLength() << "; i++) {\n"; - ss << " if(isnan("; - ss << vSubArguments[0]->GenSlidingWindowDeclRef() << ") ||"; - ss << " isnan(" << vSubArguments[1]->GenSlidingWindowDeclRef(); - ss << ")) {\n"; - ss << " arg0 = 0.0;\n"; - ss << " arg1 = 0.0;\n"; - ss << " --cnt;\n"; - ss << " }\n"; - ss << "else{\n"; - ss << " arg0 = "; - ss << vSubArguments[0]->GenSlidingWindowDeclRef() << ";\n"; - ss << " arg1 = "; - ss << vSubArguments[1]->GenSlidingWindowDeclRef() << ";}\n"; - ss << " ++cnt;\n"; - ss << " vSum0 += arg0;\n"; - ss << " vSum1 += arg1;\n"; - ss << " }\n"; - } - else { - ss << "int i = 0; i < " << nCurWindowSizeX << " && "; - ss << " i + gid0 < " << pCurDVRX->GetArrayLength(); - ss << " && i + gid0 < " << pCurDVRY->GetArrayLength(); - ss << "; i++) {\n"; - ss << "if ((isnan("; - ss << vSubArguments[0]->GenSlidingWindowDeclRef() << ")) || "; - ss << "(isnan("<< vSubArguments[1]->GenSlidingWindowDeclRef(); - ss << "))) {\n"; - ss << " arg0 = 0.0;\n"; - ss << " arg1 = 0.0;\n"; - ss << " --cnt;\n"; - ss << " }\n"; - ss << " else {\n"; - ss << " arg0 = "; - ss << vSubArguments[0]->GenSlidingWindowDeclRef() << ";\n"; - ss << " arg1 = "; - ss << vSubArguments[1]->GenSlidingWindowDeclRef() << ";\n"; - ss << " }\n"; - ss << " ++cnt;\n"; - ss << " vSum0 += arg0;\n"; - ss << " vSum1 += arg1;\n"; - ss << " }\n"; - } - ss << " if(cnt < 1) {\n"; - ss << " return CreateDoubleError(NoValue);\n"; + if(nCurWindowSizeX != nCurWindowSizeY) + { + throw Unhandled(__FILE__, __LINE__); + } + + ss << " for( "; + if (!pCurDVRX->IsStartFixed() && pCurDVRX->IsEndFixed()) { + ss << "int i = gid0; i < " << nCurWindowSizeX; + ss << " && i < " << pCurDVRX->GetArrayLength() << " && i < "; + ss << pCurDVRY->GetArrayLength() << "; i++){\n"; + ss << " if(isnan("; + ss << vSubArguments[0]->GenSlidingWindowDeclRef() << ") ||"; + ss << " isnan("<< vSubArguments[1]->GenSlidingWindowDeclRef(); + ss << ")) {\n"; + ss << " arg0 = 0.0;\n"; + ss << " arg1 = 0.0;\n"; + ss << " --cnt;\n"; + ss << " }\n"; + ss << "else{\n"; + ss << " arg0 = "; + ss << vSubArguments[0]->GenSlidingWindowDeclRef() << ";\n"; + ss << " arg1 = "; + ss << vSubArguments[1]->GenSlidingWindowDeclRef() << ";\n"; + ss << "}\n"; + ss << " ++cnt;\n"; + ss << " vSum0 += arg0;\n"; + ss << " vSum1 += arg1;\n"; ss << " }\n"; - ss << " else {\n"; - ss << " vMean0 = vSum0 / cnt;\n"; - ss << " vMean1 = vSum1 / cnt;\n"; - ss << " for("; - if (!pCurDVRX->IsStartFixed() && pCurDVRX->IsEndFixed()) { - ss << "int i = gid0; i < " << nCurWindowSizeX; - ss << " && i < " << pCurDVRX->GetArrayLength() << " && i < "; - ss << pCurDVRY->GetArrayLength() << "; i++){\n"; - ss << " if(isnan("; - ss << vSubArguments[0]->GenSlidingWindowDeclRef() << ") ||"; - ss << " isnan(" << vSubArguments[1]->GenSlidingWindowDeclRef(); - ss << ")){\n"; - ss << " arg0 = vMean0;\n"; - ss << " arg1 = vMean1;\n"; - ss << " }\n"; - ss << " else{\n"; - ss << " arg0 = "; - ss << vSubArguments[0]->GenSlidingWindowDeclRef() << ";\n"; - ss << " arg1 = "; - ss << vSubArguments[1]->GenSlidingWindowDeclRef() << ";}\n"; - ss << " vSum += (arg0 - vMean0) * (arg1 - vMean1);\n"; - ss << " }\n"; - } - else if (pCurDVRX->IsStartFixed() && !pCurDVRX->IsEndFixed()) { - ss << "int i = 0; i < gid0 + " << nCurWindowSizeX << " && "; - ss << " i < " << pCurDVRX->GetArrayLength() << " && "; - ss << " i < " << pCurDVRY->GetArrayLength() << "; i++) {\n"; - ss << " if(isnan("; - ss << vSubArguments[0]->GenSlidingWindowDeclRef() << ") || "; - ss << "isnan(" << vSubArguments[1]->GenSlidingWindowDeclRef(); - ss << ")) {\n"; - ss << " arg0 = vMean0;\n"; - ss << " arg1 = vMean1;\n"; - ss << " }\n"; - ss << "else{\n"; - ss << " arg0 = "; - ss << vSubArguments[0]->GenSlidingWindowDeclRef() << ";\n"; - ss << " arg1 = "; - ss << vSubArguments[1]->GenSlidingWindowDeclRef() << ";}\n"; - ss << " vSum += (arg0 - vMean0) * (arg1 - vMean1);\n"; - ss << " }\n"; - } - else if (pCurDVRX->IsStartFixed() && pCurDVRX->IsEndFixed()) { - ss << "int i = 0; i < " << nCurWindowSizeX << " && i < "; - ss << pCurDVRX->GetArrayLength() << " && i < "; - ss << pCurDVRY->GetArrayLength() << "; i++) {\n"; - ss << " if(isnan("; - ss << vSubArguments[0]->GenSlidingWindowDeclRef() << ") || "; - ss << "isnan(" << vSubArguments[1]->GenSlidingWindowDeclRef(); - ss << ")) {\n"; - ss << " arg0 = vMean0;\n"; - ss << " arg1 = vMean1;\n"; - ss << " }\n"; - ss << "else{\n"; - ss << " arg0 = "; - ss << vSubArguments[0]->GenSlidingWindowDeclRef() << ";\n"; - ss << " arg1 = "; - ss << vSubArguments[1]->GenSlidingWindowDeclRef() << ";}\n"; - ss << " vSum += (arg0 - vMean0) * (arg1 - vMean1);\n"; - ss << " }\n"; - } - else { - ss << "int i = 0; i < " << nCurWindowSizeX << " && "; - ss << " i + gid0 < " << pCurDVRX->GetArrayLength(); - ss << " && i + gid0 < " << pCurDVRX->GetArrayLength(); - ss << "; i++) {\n"; - ss << "if((isnan("; - ss << vSubArguments[0]->GenSlidingWindowDeclRef() << ")) || "; - ss << "(isnan(" << vSubArguments[1]->GenSlidingWindowDeclRef(); - ss << "))) {\n"; - ss << " arg0 = vMean0;\n"; - ss << " arg1 = vMean1;\n"; - ss << " }\n"; - ss << " else{\n"; - ss << " arg0 = "; - ss << vSubArguments[0]->GenSlidingWindowDeclRef() << ";\n"; - ss << " arg1 = "; - ss << vSubArguments[1]->GenSlidingWindowDeclRef() << ";\n"; - ss << " }\n"; - ss << " vSum += (arg0 - vMean0) * (arg1 - vMean1);\n"; - ss << " }\n"; - } - ss << " return vSum / cnt;\n"; + } + else if (pCurDVRX->IsStartFixed() && !pCurDVRX->IsEndFixed()) { + ss << "int i = 0; i < gid0 + " << nCurWindowSizeX << " && "; + ss << " i < " << pCurDVRX->GetArrayLength() << " && "; + ss << " i < " << pCurDVRY->GetArrayLength() << "; i++) {\n"; + ss << " if(isnan("; + ss << vSubArguments[0]->GenSlidingWindowDeclRef() << ") ||"; + ss << " isnan(" << vSubArguments[1]->GenSlidingWindowDeclRef(); + ss << ")) {\n"; + ss << " arg0 = 0.0;\n"; + ss << " arg1 = 0.0;\n"; + ss << " --cnt;\n"; + ss << " }\n"; + ss << "else{\n"; + ss << " arg0 = "; + ss << vSubArguments[0]->GenSlidingWindowDeclRef() << ";\n"; + ss << " arg1 = "; + ss << vSubArguments[1]->GenSlidingWindowDeclRef() << ";}\n"; + ss << " ++cnt;\n"; + ss << " vSum0 += arg0;\n"; + ss << " vSum1 += arg1;\n"; ss << " }\n"; - ss << "}"; } - else - { - throw Unhandled(__FILE__, __LINE__); + else if (pCurDVRX->IsStartFixed() && pCurDVRX->IsEndFixed()) { + ss << "int i = 0; i < " << nCurWindowSizeX << " && i < "; + ss << pCurDVRX->GetArrayLength() << " && i < "; + ss << pCurDVRY->GetArrayLength() << "; i++) {\n"; + ss << " if(isnan("; + ss << vSubArguments[0]->GenSlidingWindowDeclRef() << ") ||"; + ss << " isnan(" << vSubArguments[1]->GenSlidingWindowDeclRef(); + ss << ")) {\n"; + ss << " arg0 = 0.0;\n"; + ss << " arg1 = 0.0;\n"; + ss << " --cnt;\n"; + ss << " }\n"; + ss << "else{\n"; + ss << " arg0 = "; + ss << vSubArguments[0]->GenSlidingWindowDeclRef() << ";\n"; + ss << " arg1 = "; + ss << vSubArguments[1]->GenSlidingWindowDeclRef() << ";}\n"; + ss << " ++cnt;\n"; + ss << " vSum0 += arg0;\n"; + ss << " vSum1 += arg1;\n"; + ss << " }\n"; } + else { + ss << "int i = 0; i < " << nCurWindowSizeX << " && "; + ss << " i + gid0 < " << pCurDVRX->GetArrayLength(); + ss << " && i + gid0 < " << pCurDVRY->GetArrayLength(); + ss << "; i++) {\n"; + ss << "if ((isnan("; + ss << vSubArguments[0]->GenSlidingWindowDeclRef() << ")) || "; + ss << "(isnan("<< vSubArguments[1]->GenSlidingWindowDeclRef(); + ss << "))) {\n"; + ss << " arg0 = 0.0;\n"; + ss << " arg1 = 0.0;\n"; + ss << " --cnt;\n"; + ss << " }\n"; + ss << " else {\n"; + ss << " arg0 = "; + ss << vSubArguments[0]->GenSlidingWindowDeclRef() << ";\n"; + ss << " arg1 = "; + ss << vSubArguments[1]->GenSlidingWindowDeclRef() << ";\n"; + ss << " }\n"; + ss << " ++cnt;\n"; + ss << " vSum0 += arg0;\n"; + ss << " vSum1 += arg1;\n"; + ss << " }\n"; + } + ss << " if(cnt < 1) {\n"; + ss << " return CreateDoubleError(NoValue);\n"; + ss << " }\n"; + ss << " else {\n"; + ss << " vMean0 = vSum0 / cnt;\n"; + ss << " vMean1 = vSum1 / cnt;\n"; + ss << " for("; + if (!pCurDVRX->IsStartFixed() && pCurDVRX->IsEndFixed()) { + ss << "int i = gid0; i < " << nCurWindowSizeX; + ss << " && i < " << pCurDVRX->GetArrayLength() << " && i < "; + ss << pCurDVRY->GetArrayLength() << "; i++){\n"; + ss << " if(isnan("; + ss << vSubArguments[0]->GenSlidingWindowDeclRef() << ") ||"; + ss << " isnan(" << vSubArguments[1]->GenSlidingWindowDeclRef(); + ss << ")){\n"; + ss << " arg0 = vMean0;\n"; + ss << " arg1 = vMean1;\n"; + ss << " }\n"; + ss << " else{\n"; + ss << " arg0 = "; + ss << vSubArguments[0]->GenSlidingWindowDeclRef() << ";\n"; + ss << " arg1 = "; + ss << vSubArguments[1]->GenSlidingWindowDeclRef() << ";}\n"; + ss << " vSum += (arg0 - vMean0) * (arg1 - vMean1);\n"; + ss << " }\n"; + } + else if (pCurDVRX->IsStartFixed() && !pCurDVRX->IsEndFixed()) { + ss << "int i = 0; i < gid0 + " << nCurWindowSizeX << " && "; + ss << " i < " << pCurDVRX->GetArrayLength() << " && "; + ss << " i < " << pCurDVRY->GetArrayLength() << "; i++) {\n"; + ss << " if(isnan("; + ss << vSubArguments[0]->GenSlidingWindowDeclRef() << ") || "; + ss << "isnan(" << vSubArguments[1]->GenSlidingWindowDeclRef(); + ss << ")) {\n"; + ss << " arg0 = vMean0;\n"; + ss << " arg1 = vMean1;\n"; + ss << " }\n"; + ss << "else{\n"; + ss << " arg0 = "; + ss << vSubArguments[0]->GenSlidingWindowDeclRef() << ";\n"; + ss << " arg1 = "; + ss << vSubArguments[1]->GenSlidingWindowDeclRef() << ";}\n"; + ss << " vSum += (arg0 - vMean0) * (arg1 - vMean1);\n"; + ss << " }\n"; + } + else if (pCurDVRX->IsStartFixed() && pCurDVRX->IsEndFixed()) { + ss << "int i = 0; i < " << nCurWindowSizeX << " && i < "; + ss << pCurDVRX->GetArrayLength() << " && i < "; + ss << pCurDVRY->GetArrayLength() << "; i++) {\n"; + ss << " if(isnan("; + ss << vSubArguments[0]->GenSlidingWindowDeclRef() << ") || "; + ss << "isnan(" << vSubArguments[1]->GenSlidingWindowDeclRef(); + ss << ")) {\n"; + ss << " arg0 = vMean0;\n"; + ss << " arg1 = vMean1;\n"; + ss << " }\n"; + ss << "else{\n"; + ss << " arg0 = "; + ss << vSubArguments[0]->GenSlidingWindowDeclRef() << ";\n"; + ss << " arg1 = "; + ss << vSubArguments[1]->GenSlidingWindowDeclRef() << ";}\n"; + ss << " vSum += (arg0 - vMean0) * (arg1 - vMean1);\n"; + ss << " }\n"; + } + else { + ss << "int i = 0; i < " << nCurWindowSizeX << " && "; + ss << " i + gid0 < " << pCurDVRX->GetArrayLength(); + ss << " && i + gid0 < " << pCurDVRX->GetArrayLength(); + ss << "; i++) {\n"; + ss << "if((isnan("; + ss << vSubArguments[0]->GenSlidingWindowDeclRef() << ")) || "; + ss << "(isnan(" << vSubArguments[1]->GenSlidingWindowDeclRef(); + ss << "))) {\n"; + ss << " arg0 = vMean0;\n"; + ss << " arg1 = vMean1;\n"; + ss << " }\n"; + ss << " else{\n"; + ss << " arg0 = "; + ss << vSubArguments[0]->GenSlidingWindowDeclRef() << ";\n"; + ss << " arg1 = "; + ss << vSubArguments[1]->GenSlidingWindowDeclRef() << ";\n"; + ss << " }\n"; + ss << " vSum += (arg0 - vMean0) * (arg1 - vMean1);\n"; + ss << " }\n"; + } + ss << " return vSum / cnt;\n"; + ss << " }\n"; + ss << "}"; + } else { ss << " int cnt0 = 0,cnt1 = 0;\n"; diff --git a/sc/source/core/opencl/opbase.cxx b/sc/source/core/opencl/opbase.cxx index 7755610a14f3..e197ea002bb3 100644 --- a/sc/source/core/opencl/opbase.cxx +++ b/sc/source/core/opencl/opbase.cxx @@ -251,23 +251,22 @@ void CheckVariables::CheckSubArgumentIsNan( std::stringstream& ss, ss << vSubArguments[i]->GenSlidingWindowDeclRef(); ss << ";\n"; } - if (vSubArguments[i]->GetFormulaToken()->GetType() == formula::svDouble || - vSubArguments[i]->GetFormulaToken()->GetOpCode() != ocPush) - { - ss << " if("; - ss << "isnan("; - ss << vSubArguments[i]->GenSlidingWindowDeclRef(); - ss << "))\n"; - ss << " tmp"; - ss << i; - ss << "=0;\n else \n"; - ss << " tmp"; - ss << i; - ss << "="; - ss << vSubArguments[i]->GenSlidingWindowDeclRef(); - ss << ";\n"; + if (vSubArguments[i]->GetFormulaToken()->GetType() != formula::svDouble && + vSubArguments[i]->GetFormulaToken()->GetOpCode() == ocPush) + return; - } + ss << " if("; + ss << "isnan("; + ss << vSubArguments[i]->GenSlidingWindowDeclRef(); + ss << "))\n"; + ss << " tmp"; + ss << i; + ss << "=0;\n else \n"; + ss << " tmp"; + ss << i; + ss << "="; + ss << vSubArguments[i]->GenSlidingWindowDeclRef(); + ss << ";\n"; } diff --git a/sc/source/core/tool/formulalogger.cxx b/sc/source/core/tool/formulalogger.cxx index cb072c7a4ef8..3f600cdb9743 100644 --- a/sc/source/core/tool/formulalogger.cxx +++ b/sc/source/core/tool/formulalogger.cxx @@ -75,20 +75,20 @@ struct FormulaLogger::GroupScope::Impl { ++mrLogger.mnNestLevel; - if (mbOutputEnabled) - { - sc::TokenStringContext aCxt(&rDoc, rDoc.GetGrammar()); - OUString aFormula = rCell.GetCode()->CreateString(aCxt, rCell.aPos); + if (!mbOutputEnabled) + return; - mrLogger.write(maPrefix); - mrLogger.writeNestLevel(); + sc::TokenStringContext aCxt(&rDoc, rDoc.GetGrammar()); + OUString aFormula = rCell.GetCode()->CreateString(aCxt, rCell.aPos); - mrLogger.writeAscii("-- enter (formula='"); - mrLogger.write(aFormula); - mrLogger.writeAscii("', size="); - mrLogger.write(rCell.GetSharedLength()); - mrLogger.writeAscii(")\n"); - } + mrLogger.write(maPrefix); + mrLogger.writeNestLevel(); + + mrLogger.writeAscii("-- enter (formula='"); + mrLogger.write(aFormula); + mrLogger.writeAscii("', size="); + mrLogger.write(rCell.GetSharedLength()); + mrLogger.writeAscii(")\n"); } ~Impl() diff --git a/sc/source/ui/StatisticsDialogs/RandomNumberGeneratorDialog.cxx b/sc/source/ui/StatisticsDialogs/RandomNumberGeneratorDialog.cxx index 9127f879d17a..dea6561288a6 100644 --- a/sc/source/ui/StatisticsDialogs/RandomNumberGeneratorDialog.cxx +++ b/sc/source/ui/StatisticsDialogs/RandomNumberGeneratorDialog.cxx @@ -132,19 +132,19 @@ void ScRandomNumberGeneratorDialog::Close() void ScRandomNumberGeneratorDialog::SetReference( const ScRange& rReferenceRange, ScDocument& rDoc ) { - if (mxInputRangeEdit->GetWidget()->get_sensitive()) - { - if ( rReferenceRange.aStart != rReferenceRange.aEnd ) - RefInputStart(mxInputRangeEdit.get()); + if (!mxInputRangeEdit->GetWidget()->get_sensitive()) + return; - maInputRange = rReferenceRange; + if ( rReferenceRange.aStart != rReferenceRange.aEnd ) + RefInputStart(mxInputRangeEdit.get()); - OUString aReferenceString(maInputRange.Format(rDoc, ScRefFlags::RANGE_ABS_3D, rDoc.GetAddressConvention())); - mxInputRangeEdit->SetRefString( aReferenceString ); + maInputRange = rReferenceRange; - mxButtonApply->set_sensitive(true); - mxButtonOk->set_sensitive(true); - } + OUString aReferenceString(maInputRange.Format(rDoc, ScRefFlags::RANGE_ABS_3D, rDoc.GetAddressConvention())); + mxInputRangeEdit->SetRefString( aReferenceString ); + + mxButtonApply->set_sensitive(true); + mxButtonOk->set_sensitive(true); } void ScRandomNumberGeneratorDialog::SelectGeneratorAndGenerateNumbers() diff --git a/sc/source/ui/app/inputhdl.cxx b/sc/source/ui/app/inputhdl.cxx index 377077f7032b..1eda36788038 100644 --- a/sc/source/ui/app/inputhdl.cxx +++ b/sc/source/ui/app/inputhdl.cxx @@ -1944,49 +1944,49 @@ void ScInputHandler::UseColData() // When typing OUString aNew; miAutoPosColumn = pColumnData->end(); miAutoPosColumn = findText(*pColumnData, miAutoPosColumn, aText, aNew, false); - if (miAutoPosColumn != pColumnData->end()) - { - // Strings can contain line endings (e.g. due to dBase import), - // which would result in multiple paragraphs here, which is not desirable. - //! Then GetExactMatch doesn't work either - lcl_RemoveLineEnd( aNew ); + if (miAutoPosColumn == pColumnData->end()) + return; - // Keep paragraph, just append the rest - //! Exact replacement in EnterHandler !!! - // One Space between paragraphs: - sal_Int32 nEdLen = mpEditEngine->GetTextLen() + nParCnt - 1; - OUString aIns = aNew.copy(nEdLen); + // Strings can contain line endings (e.g. due to dBase import), + // which would result in multiple paragraphs here, which is not desirable. + //! Then GetExactMatch doesn't work either + lcl_RemoveLineEnd( aNew ); - // Selection must be "backwards", so the cursor stays behind the last - // typed character - ESelection aSelection( aSel.nEndPara, aSel.nEndPos + aIns.getLength(), - aSel.nEndPara, aSel.nEndPos ); + // Keep paragraph, just append the rest + //! Exact replacement in EnterHandler !!! + // One Space between paragraphs: + sal_Int32 nEdLen = mpEditEngine->GetTextLen() + nParCnt - 1; + OUString aIns = aNew.copy(nEdLen); - // When editing in input line, apply to both edit views - if ( pTableView ) - { - pTableView->InsertText( aIns ); - pTableView->SetSelection( aSelection ); - } - if ( pTopView ) - { - pTopView->InsertText( aIns ); - pTopView->SetSelection( aSelection ); - } + // Selection must be "backwards", so the cursor stays behind the last + // typed character + ESelection aSelection( aSel.nEndPara, aSel.nEndPos + aIns.getLength(), + aSel.nEndPara, aSel.nEndPos ); + + // When editing in input line, apply to both edit views + if ( pTableView ) + { + pTableView->InsertText( aIns ); + pTableView->SetSelection( aSelection ); + } + if ( pTopView ) + { + pTopView->InsertText( aIns ); + pTopView->SetSelection( aSelection ); + } - aAutoSearch = aText; // To keep searching - nAutoPos is set + aAutoSearch = aText; // To keep searching - nAutoPos is set - if (aText.getLength() == aNew.getLength()) - { - // If the inserted text is found, consume TAB only if there's more coming - OUString aDummy; - ScTypedCaseStrSet::const_iterator itNextPos = - findText(*pColumnData, miAutoPosColumn, aText, aDummy, false); - bUseTab = itNextPos != pColumnData->end(); - } - else - bUseTab = true; + if (aText.getLength() == aNew.getLength()) + { + // If the inserted text is found, consume TAB only if there's more coming + OUString aDummy; + ScTypedCaseStrSet::const_iterator itNextPos = + findText(*pColumnData, miAutoPosColumn, aText, aDummy, false); + bUseTab = itNextPos != pColumnData->end(); } + else + bUseTab = true; } void ScInputHandler::NextAutoEntry( bool bBack ) diff --git a/sc/source/ui/dbgui/pfiltdlg.cxx b/sc/source/ui/dbgui/pfiltdlg.cxx index 8ab7a954f440..98b0580bdda9 100644 --- a/sc/source/ui/dbgui/pfiltdlg.cxx +++ b/sc/source/ui/dbgui/pfiltdlg.cxx @@ -219,66 +219,66 @@ void ScPivotFilterDlg::FillFieldLists() m_xLbField2->append_text(aStrNone); m_xLbField3->append_text(aStrNone); - if ( pDoc ) + if ( !pDoc ) + return; + + OUString aFieldName; + SCTAB nTab = nSrcTab; + SCCOL nFirstCol = theQueryData.nCol1; + SCROW nFirstRow = theQueryData.nRow1; + SCCOL nMaxCol = theQueryData.nCol2; + SCCOL col = 0; + + for ( col=nFirstCol; col<=nMaxCol; col++ ) { - OUString aFieldName; - SCTAB nTab = nSrcTab; - SCCOL nFirstCol = theQueryData.nCol1; - SCROW nFirstRow = theQueryData.nRow1; - SCCOL nMaxCol = theQueryData.nCol2; - SCCOL col = 0; - - for ( col=nFirstCol; col<=nMaxCol; col++ ) + aFieldName = pDoc->GetString(col, nFirstRow, nTab); + if ( aFieldName.isEmpty() ) { - aFieldName = pDoc->GetString(col, nFirstRow, nTab); - if ( aFieldName.isEmpty() ) - { - aFieldName = ScGlobal::ReplaceOrAppend( aStrColumn, "%1", ScColToAlpha( col )); - } - m_xLbField1->append_text(aFieldName); - m_xLbField2->append_text(aFieldName); - m_xLbField3->append_text(aFieldName); + aFieldName = ScGlobal::ReplaceOrAppend( aStrColumn, "%1", ScColToAlpha( col )); } + m_xLbField1->append_text(aFieldName); + m_xLbField2->append_text(aFieldName); + m_xLbField3->append_text(aFieldName); } } void ScPivotFilterDlg::UpdateValueList( sal_uInt16 nList ) { - if ( pDoc && nList>0 && nList<=3 ) - { - weld::ComboBox* pValList = aValueEdArr[nList-1]; - sal_Int32 nFieldSelPos = aFieldLbArr[nList-1]->get_active(); - OUString aCurValue = pValList->get_active_text(); + if ( !(pDoc && nList>0 && nList<=3) ) + return; - pValList->clear(); - pValList->append_text(aStrNotEmpty); - pValList->append_text(aStrEmpty); + weld::ComboBox* pValList = aValueEdArr[nList-1]; + sal_Int32 nFieldSelPos = aFieldLbArr[nList-1]->get_active(); + OUString aCurValue = pValList->get_active_text(); + + pValList->clear(); + pValList->append_text(aStrNotEmpty); + pValList->append_text(aStrEmpty); - if ( pDoc && nFieldSelPos ) + if ( pDoc && nFieldSelPos ) + { + SCCOL nColumn = theQueryData.nCol1 + static_cast(nFieldSelPos) - 1; + if (!m_pEntryLists[nColumn]) { - SCCOL nColumn = theQueryData.nCol1 + static_cast(nFieldSelPos) - 1; - if (!m_pEntryLists[nColumn]) - { - weld::WaitObject aWaiter(m_xDialog.get()); - - SCTAB nTab = nSrcTab; - SCROW nFirstRow = theQueryData.nRow1; - SCROW nLastRow = theQueryData.nRow2; - nFirstRow++; - bool bCaseSens = m_xBtnCase->get_active(); - m_pEntryLists[nColumn].reset( new ScFilterEntries); - pDoc->GetFilterEntriesArea( - nColumn, nFirstRow, nLastRow, nTab, bCaseSens, *m_pEntryLists[nColumn]); - } + weld::WaitObject aWaiter(m_xDialog.get()); + + SCTAB nTab = nSrcTab; + SCROW nFirstRow = theQueryData.nRow1; + SCROW nLastRow = theQueryData.nRow2; + nFirstRow++; + bool bCaseSens = m_xBtnCase->get_active(); + m_pEntryLists[nColumn].reset( new ScFilterEntries); + pDoc->GetFilterEntriesArea( + nColumn, nFirstRow, nLastRow, nTab, bCaseSens, *m_pEntryLists[nColumn]); + } - const ScFilterEntries* pColl = m_pEntryLists[nColumn].get(); - for (const auto& rEntry : *pColl) - { - pValList->append_text(rEntry.GetString()); - } + const ScFilterEntries* pColl = m_pEntryLists[nColumn].get(); + for (const auto& rEntry : *pColl) + { + pValList->append_text(rEntry.GetString()); } - pValList->set_entry_text(aCurValue); } + pValList->set_entry_text(aCurValue); } void ScPivotFilterDlg::ClearValueList( sal_uInt16 nList ) @@ -467,21 +467,21 @@ IMPL_LINK(ScPivotFilterDlg, CheckBoxHdl, weld::Button&, rBox, void) { // update the value lists when dealing with uppercase/lowercase - if (&rBox == m_xBtnCase.get()) // value lists - { - for (auto& a : m_pEntryLists) - a.reset(); - - OUString aCurVal1 = m_xEdVal1->get_active_text(); - OUString aCurVal2 = m_xEdVal2->get_active_text(); - OUString aCurVal3 = m_xEdVal3->get_active_text(); - UpdateValueList( 1 ); - UpdateValueList( 2 ); - UpdateValueList( 3 ); - m_xEdVal1->set_entry_text(aCurVal1); - m_xEdVal2->set_entry_text(aCurVal2); - m_xEdVal3->set_entry_text(aCurVal3); - } + if (&rBox != m_xBtnCase.get()) // value lists + return; + + for (auto& a : m_pEntryLists) + a.reset(); + + OUString aCurVal1 = m_xEdVal1->get_active_text(); + OUString aCurVal2 = m_xEdVal2->get_active_text(); + OUString aCurVal3 = m_xEdVal3->get_active_text(); + UpdateValueList( 1 ); + UpdateValueList( 2 ); + UpdateValueList( 3 ); + m_xEdVal1->set_entry_text(aCurVal1); + m_xEdVal2->set_entry_text(aCurVal2); + m_xEdVal3->set_entry_text(aCurVal3); } IMPL_LINK( ScPivotFilterDlg, ValModifyHdl, weld::ComboBox&, rEd, void ) diff --git a/sc/source/ui/dbgui/tpsort.cxx b/sc/source/ui/dbgui/tpsort.cxx index 2e7ed6e3af8d..5ad843793a37 100644 --- a/sc/source/ui/dbgui/tpsort.cxx +++ b/sc/source/ui/dbgui/tpsort.cxx @@ -276,23 +276,23 @@ void ScTabPageSortFields::ActivatePage( const SfxItemSet& rSet ) { // Refresh local copy with shared data aSortData = static_cast(rSet.Get( SCITEM_SORTDATA )).GetSortData(); - if (ScSortDlg* pDlg = static_cast(GetDialogController())) - { - if ( bHasHeader != pDlg->GetHeaders() - || bSortByRows != pDlg->GetByRows() ) - { - std::vector nCurSel; - for ( sal_uInt16 i=0; im_xLbSort->get_active() ); + ScSortDlg* pDlg = static_cast(GetDialogController()); + if (!pDlg) + return; - bHasHeader = pDlg->GetHeaders(); - bSortByRows = pDlg->GetByRows(); - FillFieldLists(0); + if ( bHasHeader == pDlg->GetHeaders() && bSortByRows == pDlg->GetByRows() ) + return; - for ( sal_uInt16 i=0; im_xLbSort->set_active(nCurSel[i]); - } - } + std::vector nCurSel; + for ( sal_uInt16 i=0; im_xLbSort->get_active() ); + + bHasHeader = pDlg->GetHeaders(); + bSortByRows = pDlg->GetByRows(); + FillFieldLists(0); + + for ( sal_uInt16 i=0; im_xLbSort->set_active(nCurSel[i]); } DeactivateRC ScTabPageSortFields::DeactivatePage( SfxItemSet* pSetP ) @@ -314,77 +314,77 @@ DeactivateRC ScTabPageSortFields::DeactivatePage( SfxItemSet* pSetP ) void ScTabPageSortFields::FillFieldLists( sal_uInt16 nStartField ) { - if ( pViewData ) + if ( !pViewData ) + return; + + ScDocument* pDoc = pViewData->GetDocument(); + + if ( !pDoc ) + return; + + for (sal_uInt16 j = nStartField; j < nSortKeyCount; ++j) + { + m_aSortWin.m_aSortKeyItems[j]->m_xLbSort->clear(); + m_aSortWin.m_aSortKeyItems[j]->m_xLbSort->freeze(); + m_aSortWin.m_aSortKeyItems[j]->m_xLbSort->append_text(aStrUndefined); + } + + SCCOL nFirstSortCol = aSortData.nCol1; + SCROW nFirstSortRow = aSortData.nRow1; + SCTAB nTab = pViewData->GetTabNo(); + sal_uInt16 i = 1; + nFieldArr.clear(); + nFieldArr.push_back(0); + + if ( bSortByRows ) { - ScDocument* pDoc = pViewData->GetDocument(); + OUString aFieldName; + SCCOL nMaxCol = pDoc->ClampToAllocatedColumns(nTab, aSortData.nCol2); + SCCOL col; - if ( pDoc ) + for ( col=nFirstSortCol; col<=nMaxCol && iGetString(col, nFirstSortRow, nTab); + if ( !bHasHeader || aFieldName.isEmpty() ) { - m_aSortWin.m_aSortKeyItems[j]->m_xLbSort->clear(); - m_aSortWin.m_aSortKeyItems[j]->m_xLbSort->freeze(); - m_aSortWin.m_aSortKeyItems[j]->m_xLbSort->append_text(aStrUndefined); + aFieldName = ScGlobal::ReplaceOrAppend( aStrColumn, "%1", ScColToAlpha( col )); } + nFieldArr.push_back( col ); - SCCOL nFirstSortCol = aSortData.nCol1; - SCROW nFirstSortRow = aSortData.nRow1; - SCTAB nTab = pViewData->GetTabNo(); - sal_uInt16 i = 1; - nFieldArr.clear(); - nFieldArr.push_back(0); + for ( sal_uInt16 j=nStartField; jm_xLbSort->insert_text(i, aFieldName); - if ( bSortByRows ) - { - OUString aFieldName; - SCCOL nMaxCol = pDoc->ClampToAllocatedColumns(nTab, aSortData.nCol2); - SCCOL col; - - for ( col=nFirstSortCol; col<=nMaxCol && iGetString(col, nFirstSortRow, nTab); - if ( !bHasHeader || aFieldName.isEmpty() ) - { - aFieldName = ScGlobal::ReplaceOrAppend( aStrColumn, "%1", ScColToAlpha( col )); - } - nFieldArr.push_back( col ); - - for ( sal_uInt16 j=nStartField; jm_xLbSort->insert_text(i, aFieldName); - - i++; - } - } - else - { - OUString aFieldName; - SCROW nMaxRow = aSortData.nRow2; - SCROW row; - - for ( row=nFirstSortRow; row<=nMaxRow && iGetString(nFirstSortCol, row, nTab); - if ( !bHasHeader || aFieldName.isEmpty() ) - { - aFieldName = ScGlobal::ReplaceOrAppend( aStrRow, "%1", OUString::number( row+1)); - } - nFieldArr.push_back( row ); - - for ( sal_uInt16 j=nStartField; jm_xLbSort->insert_text(i, aFieldName); - - i++; - } - } + i++; + } + } + else + { + OUString aFieldName; + SCROW nMaxRow = aSortData.nRow2; + SCROW row; - for (sal_uInt16 j=nStartField; j < nSortKeyCount; ++j) + for ( row=nFirstSortRow; row<=nMaxRow && iGetString(nFirstSortCol, row, nTab); + if ( !bHasHeader || aFieldName.isEmpty() ) { - m_aSortWin.m_aSortKeyItems[j]->m_xLbSort->thaw(); + aFieldName = ScGlobal::ReplaceOrAppend( aStrRow, "%1", OUString::number( row+1)); } + nFieldArr.push_back( row ); - nFieldCount = i; + for ( sal_uInt16 j=nStartField; jm_xLbSort->insert_text(i, aFieldName); + + i++; } } + + for (sal_uInt16 j=nStartField; j < nSortKeyCount; ++j) + { + m_aSortWin.m_aSortKeyItems[j]->m_xLbSort->thaw(); + } + + nFieldCount = i; } sal_uInt16 ScTabPageSortFields::GetFieldSelPos( SCCOLROW nField ) @@ -449,22 +449,22 @@ IMPL_LINK( ScTabPageSortFields, SelectHdl, weld::ComboBox&, rLb, void ) // If not selecting the last Listbox, modify the succeeding ones ++pIter; - if ( std::distance(m_aSortWin.m_aSortKeyItems.begin(), pIter) < nSortKeyCount ) + if ( std::distance(m_aSortWin.m_aSortKeyItems.begin(), pIter) >= nSortKeyCount ) + return; + + if ( aSelEntry == aStrUndefined ) { - if ( aSelEntry == aStrUndefined ) + for ( ; pIter != m_aSortWin.m_aSortKeyItems.end(); ++pIter ) { - for ( ; pIter != m_aSortWin.m_aSortKeyItems.end(); ++pIter ) - { - (*pIter)->m_xLbSort->set_active(0); + (*pIter)->m_xLbSort->set_active(0); - (*pIter)->DisableField(); - } - } - else - { - (*pIter)->EnableField(); + (*pIter)->DisableField(); } - } + } + else + { + (*pIter)->EnableField(); + } } IMPL_LINK_NOARG(ScTabPageSortFields, ScrollToEndHdl, Timer*, void) @@ -709,23 +709,24 @@ void ScTabPageSortOptions::ActivatePage( const SfxItemSet& rSet ) { // Refresh local copy with shared data aSortData = static_cast(rSet.Get( SCITEM_SORTDATA )).GetSortData(); - if (ScSortDlg* pDlg = static_cast(GetDialogController())) - { - if ( m_xBtnHeader->get_active() != pDlg->GetHeaders() ) - { - m_xBtnHeader->set_active( pDlg->GetHeaders() ); - } + ScSortDlg* pDlg = static_cast(GetDialogController()); + if (!pDlg) + return; - if ( m_xBtnTopDown->get_active() != pDlg->GetByRows() ) - { - m_xBtnTopDown->set_active( pDlg->GetByRows() ); - m_xBtnLeftRight->set_active( !pDlg->GetByRows() ); - } + if ( m_xBtnHeader->get_active() != pDlg->GetHeaders() ) + { + m_xBtnHeader->set_active( pDlg->GetHeaders() ); + } - m_xBtnHeader->set_label( (pDlg->GetByRows()) - ? aStrColLabel - : aStrRowLabel ); + if ( m_xBtnTopDown->get_active() != pDlg->GetByRows() ) + { + m_xBtnTopDown->set_active( pDlg->GetByRows() ); + m_xBtnLeftRight->set_active( !pDlg->GetByRows() ); } + + m_xBtnHeader->set_label( (pDlg->GetByRows()) + ? aStrColLabel + : aStrRowLabel ); } DeactivateRC ScTabPageSortOptions::DeactivatePage( SfxItemSet* pSetP ) @@ -852,23 +853,23 @@ void ScTabPageSortOptions::EdOutPosModHdl() OUString theCurPosStr = m_xEdOutPos->get_text(); ScRefFlags nResult = ScAddress().Parse( theCurPosStr, pDoc, pDoc->GetAddressConvention() ); - if ( (nResult & ScRefFlags::VALID) == ScRefFlags::VALID ) - { - bool bFound = false; - sal_Int32 i = 0; - const int nCount = m_xLbOutPos->get_count(); + if ( (nResult & ScRefFlags::VALID) != ScRefFlags::VALID ) + return; - for ( i=2; iget_id(i); - bFound = (theCurPosStr == aStr); - } + bool bFound = false; + sal_Int32 i = 0; + const int nCount = m_xLbOutPos->get_count(); - if ( bFound ) - m_xLbOutPos->set_active(--i); - else - m_xLbOutPos->set_active(0); + for ( i=2; iget_id(i); + bFound = (theCurPosStr == aStr); } + + if ( bFound ) + m_xLbOutPos->set_active(--i); + else + m_xLbOutPos->set_active(0); } void ScTabPageSortOptions::FillAlgor() diff --git a/sc/source/ui/dbgui/tpsubt.cxx b/sc/source/ui/dbgui/tpsubt.cxx index ed23b10017a6..92ff178eeaef 100644 --- a/sc/source/ui/dbgui/tpsubt.cxx +++ b/sc/source/ui/dbgui/tpsubt.cxx @@ -235,38 +235,38 @@ void ScTpSubTotalGroup::FillListBoxes() { OSL_ENSURE( pViewData && pDoc, "ViewData or Document not found :-/" ); - if ( pViewData && pDoc ) + if ( !(pViewData && pDoc) ) + return; + + SCCOL nFirstCol = rSubTotalData.nCol1; + SCROW nFirstRow = rSubTotalData.nRow1; + SCTAB nTab = pViewData->GetTabNo(); + SCCOL nMaxCol = rSubTotalData.nCol2; + SCCOL col; + OUString aFieldName; + + mxLbGroup->clear(); + mxLbColumns->clear(); + mxLbGroup->insert_text(0, aStrNone ); + + sal_uInt16 i=0; + for ( col=nFirstCol; col<=nMaxCol && iGetTabNo(); - SCCOL nMaxCol = rSubTotalData.nCol2; - SCCOL col; - OUString aFieldName; - - mxLbGroup->clear(); - mxLbColumns->clear(); - mxLbGroup->insert_text(0, aStrNone ); - - sal_uInt16 i=0; - for ( col=nFirstCol; col<=nMaxCol && iGetString(col, nFirstRow, nTab); + if ( aFieldName.isEmpty() ) { - aFieldName = pDoc->GetString(col, nFirstRow, nTab); - if ( aFieldName.isEmpty() ) - { - aFieldName = ScGlobal::ReplaceOrAppend( aStrColumn, "%1", ScColToAlpha( col )); - } - nFieldArr[i] = col; - mxLbGroup->insert_text(i+1, aFieldName); - mxLbColumns->insert(i); - mxLbColumns->set_toggle(i, TRISTATE_FALSE); - mxLbColumns->set_text(i, aFieldName, 0); - mxLbColumns->set_id(i, "0"); - i++; + aFieldName = ScGlobal::ReplaceOrAppend( aStrColumn, "%1", ScColToAlpha( col )); } - // subsequent initialization of the constant: - nFieldCount = i; + nFieldArr[i] = col; + mxLbGroup->insert_text(i+1, aFieldName); + mxLbColumns->insert(i); + mxLbColumns->set_toggle(i, TRISTATE_FALSE); + mxLbColumns->set_text(i, aFieldName, 0); + mxLbColumns->set_id(i, "0"); + i++; } + // subsequent initialization of the constant: + nFieldCount = i; } sal_uInt16 ScTpSubTotalGroup::GetFieldSelPos( SCCOL nField ) @@ -345,20 +345,20 @@ IMPL_LINK(ScTpSubTotalGroup, SelectListBoxHdl, weld::ComboBox&, rLb, void) void ScTpSubTotalGroup::SelectHdl(const weld::Widget *pLb) { const sal_Int32 nColumn = mxLbColumns->get_selected_index(); - if (nColumn != -1) - { - const sal_Int32 nFunction = mxLbFunctions->get_selected_index(); - sal_uInt16 nOldFunction = mxLbColumns->get_id(nColumn).toUInt32(); + if (nColumn == -1) + return; - if ( pLb == mxLbColumns.get() ) - { - mxLbFunctions->select(nOldFunction); - } - else if ( pLb == mxLbFunctions.get() ) - { - mxLbColumns->set_id(nColumn, OUString::number(nFunction)); - mxLbColumns->set_toggle(nColumn, TRISTATE_TRUE); - } + const sal_Int32 nFunction = mxLbFunctions->get_selected_index(); + sal_uInt16 nOldFunction = mxLbColumns->get_id(nColumn).toUInt32(); + + if ( pLb == mxLbColumns.get() ) + { + mxLbFunctions->select(nOldFunction); + } + else if ( pLb == mxLbFunctions.get() ) + { + mxLbColumns->set_id(nColumn, OUString::number(nFunction)); + mxLbColumns->set_toggle(nColumn, TRISTATE_TRUE); } } diff --git a/sc/source/ui/docshell/docsh.cxx b/sc/source/ui/docshell/docsh.cxx index b0d3dd8f55cc..434be78d2c4a 100644 --- a/sc/source/ui/docshell/docsh.cxx +++ b/sc/source/ui/docshell/docsh.cxx @@ -1049,31 +1049,32 @@ void ScDocShell::Notify( SfxBroadcaster&, const SfxHint& rHint ) } } - if ( const SfxEventHint* pSfxEventHint = dynamic_cast(&rHint) ) + const SfxEventHint* pSfxEventHint = dynamic_cast(&rHint); + if (!pSfxEventHint) + return; + + switch( pSfxEventHint->GetEventId() ) { - switch( pSfxEventHint->GetEventId() ) - { - case SfxEventHintId::CreateDoc: - { - uno::Any aWorkbook; - aWorkbook <<= mxAutomationWorkbookObject; - uno::Sequence< uno::Any > aArgs(1); - aArgs[0] = aWorkbook; - SC_MOD()->CallAutomationApplicationEventSinks( "NewWorkbook", aArgs ); - } - break; - case SfxEventHintId::OpenDoc: - { - uno::Any aWorkbook; - aWorkbook <<= mxAutomationWorkbookObject; - uno::Sequence< uno::Any > aArgs(1); - aArgs[0] = aWorkbook; - SC_MOD()->CallAutomationApplicationEventSinks( "WorkbookOpen", aArgs ); - } - break; - default: - break; - } + case SfxEventHintId::CreateDoc: + { + uno::Any aWorkbook; + aWorkbook <<= mxAutomationWorkbookObject; + uno::Sequence< uno::Any > aArgs(1); + aArgs[0] = aWorkbook; + SC_MOD()->CallAutomationApplicationEventSinks( "NewWorkbook", aArgs ); + } + break; + case SfxEventHintId::OpenDoc: + { + uno::Any aWorkbook; + aWorkbook <<= mxAutomationWorkbookObject; + uno::Sequence< uno::Any > aArgs(1); + aArgs[0] = aWorkbook; + SC_MOD()->CallAutomationApplicationEventSinks( "WorkbookOpen", aArgs ); + } + break; + default: + break; } } @@ -3111,24 +3112,24 @@ void ScDocShell::ResetKeyBindings( ScOptionsUtil::KeyBindingType eType ) void ScDocShell::UseSheetSaveEntries() { - if (m_pSheetSaveData) - { - m_pSheetSaveData->UseSaveEntries(); // use positions from saved file for next saving + if (!m_pSheetSaveData) + return; - bool bHasEntries = false; - SCTAB nTabCount = m_aDocument.GetTableCount(); - SCTAB nTab; - for (nTab = 0; nTab < nTabCount; ++nTab) - if (m_pSheetSaveData->HasStreamPos(nTab)) - bHasEntries = true; + m_pSheetSaveData->UseSaveEntries(); // use positions from saved file for next saving - if (!bHasEntries) - { - // if no positions were set (for example, export to other format), - // reset all "valid" flags - for (nTab = 0; nTab < nTabCount; ++nTab) - m_aDocument.SetStreamValid(nTab, false); - } + bool bHasEntries = false; + SCTAB nTabCount = m_aDocument.GetTableCount(); + SCTAB nTab; + for (nTab = 0; nTab < nTabCount; ++nTab) + if (m_pSheetSaveData->HasStreamPos(nTab)) + bHasEntries = true; + + if (!bHasEntries) + { + // if no positions were set (for example, export to other format), + // reset all "valid" flags + for (nTab = 0; nTab < nTabCount; ++nTab) + m_aDocument.SetStreamValid(nTab, false); } } @@ -3220,29 +3221,29 @@ void ScDocShell::SetChangeRecording( bool bActivate ) void ScDocShell::SetProtectionPassword( const OUString &rNewPassword ) { ScChangeTrack* pChangeTrack = m_aDocument.GetChangeTrack(); - if (pChangeTrack) - { - bool bProtected = pChangeTrack->IsProtected(); + if (!pChangeTrack) + return; - if (!rNewPassword.isEmpty()) - { - // when password protection is applied change tracking must always be active - SetChangeRecording( true ); + bool bProtected = pChangeTrack->IsProtected(); - css::uno::Sequence< sal_Int8 > aProtectionHash; - SvPasswordHelper::GetHashPassword( aProtectionHash, rNewPassword ); - pChangeTrack->SetProtection( aProtectionHash ); - } - else - { - pChangeTrack->SetProtection( css::uno::Sequence< sal_Int8 >() ); - } + if (!rNewPassword.isEmpty()) + { + // when password protection is applied change tracking must always be active + SetChangeRecording( true ); - if ( bProtected != pChangeTrack->IsProtected() ) - { - UpdateAcceptChangesDialog(); - SetDocumentModified(); - } + css::uno::Sequence< sal_Int8 > aProtectionHash; + SvPasswordHelper::GetHashPassword( aProtectionHash, rNewPassword ); + pChangeTrack->SetProtection( aProtectionHash ); + } + else + { + pChangeTrack->SetProtection( css::uno::Sequence< sal_Int8 >() ); + } + + if ( bProtected != pChangeTrack->IsProtected() ) + { + UpdateAcceptChangesDialog(); + SetDocumentModified(); } } diff --git a/sc/source/ui/drawfunc/fuconrec.cxx b/sc/source/ui/drawfunc/fuconrec.cxx index 8743138ec405..1f33472a6bfe 100644 --- a/sc/source/ui/drawfunc/fuconrec.cxx +++ b/sc/source/ui/drawfunc/fuconrec.cxx @@ -207,132 +207,132 @@ void FuConstRectangle::SetLineEnds(SfxItemSet& rAttr, const SdrObject& rObj, sal { SdrModel& rModel(rObj.getSdrModelFromSdrObject()); - if ( nSlotId == SID_LINE_ARROW_START || + if ( !(nSlotId == SID_LINE_ARROW_START || nSlotId == SID_LINE_ARROW_END || nSlotId == SID_LINE_ARROWS || nSlotId == SID_LINE_ARROW_CIRCLE || nSlotId == SID_LINE_CIRCLE_ARROW || nSlotId == SID_LINE_ARROW_SQUARE || nSlotId == SID_LINE_SQUARE_ARROW || - nSlotId == SID_DRAW_MEASURELINE ) + nSlotId == SID_DRAW_MEASURELINE) ) + return; + + + // set attributes of line start and ends + + // arrowhead + ::basegfx::B2DPolyPolygon aArrow( getPolygon( RID_SVXSTR_ARROW, rModel ) ); + if( !aArrow.count() ) { + ::basegfx::B2DPolygon aNewArrow; + aNewArrow.append(::basegfx::B2DPoint(10.0, 0.0)); + aNewArrow.append(::basegfx::B2DPoint(0.0, 30.0)); + aNewArrow.append(::basegfx::B2DPoint(20.0, 30.0)); + aNewArrow.setClosed(true); + aArrow.append(aNewArrow); + } - // set attributes of line start and ends + // Circles + ::basegfx::B2DPolyPolygon aCircle( getPolygon( RID_SVXSTR_CIRCLE, rModel ) ); + if( !aCircle.count() ) + { + ::basegfx::B2DPolygon aNewCircle = ::basegfx::utils::createPolygonFromEllipse(::basegfx::B2DPoint(0.0, 0.0), 250.0, 250.0); + aNewCircle.setClosed(true); + aCircle.append(aNewCircle); + } + + // Square + ::basegfx::B2DPolyPolygon aSquare( getPolygon( RID_SVXSTR_SQUARE, rModel ) ); + if( !aSquare.count() ) + { + ::basegfx::B2DPolygon aNewSquare; + aNewSquare.append(::basegfx::B2DPoint(0.0, 0.0)); + aNewSquare.append(::basegfx::B2DPoint(10.0, 0.0)); + aNewSquare.append(::basegfx::B2DPoint(10.0, 10.0)); + aNewSquare.append(::basegfx::B2DPoint(0.0, 10.0)); + aNewSquare.setClosed(true); + aSquare.append(aNewSquare); + } - // arrowhead - ::basegfx::B2DPolyPolygon aArrow( getPolygon( RID_SVXSTR_ARROW, rModel ) ); - if( !aArrow.count() ) + SfxItemSet aSet( rModel.GetItemPool() ); + long nWidth = 200; // (1/100th mm) + + // determine line width and calculate with it the line end width + if( aSet.GetItemState( XATTR_LINEWIDTH ) != SfxItemState::DONTCARE ) + { + long nValue = aSet.Get( XATTR_LINEWIDTH ).GetValue(); + if( nValue > 0 ) + nWidth = nValue * 3; + } + + switch (nSlotId) + { + case SID_LINE_ARROWS: + case SID_DRAW_MEASURELINE: { - ::basegfx::B2DPolygon aNewArrow; - aNewArrow.append(::basegfx::B2DPoint(10.0, 0.0)); - aNewArrow.append(::basegfx::B2DPoint(0.0, 30.0)); - aNewArrow.append(::basegfx::B2DPoint(20.0, 30.0)); - aNewArrow.setClosed(true); - aArrow.append(aNewArrow); + // connector with arrow ends + rAttr.Put(XLineStartItem(SvxResId(RID_SVXSTR_ARROW), aArrow)); + rAttr.Put(XLineStartWidthItem(nWidth)); + rAttr.Put(XLineEndItem(SvxResId(RID_SVXSTR_ARROW), aArrow)); + rAttr.Put(XLineEndWidthItem(nWidth)); } + break; - // Circles - ::basegfx::B2DPolyPolygon aCircle( getPolygon( RID_SVXSTR_CIRCLE, rModel ) ); - if( !aCircle.count() ) + case SID_LINE_ARROW_START: + case SID_LINE_ARROW_CIRCLE: + case SID_LINE_ARROW_SQUARE: { - ::basegfx::B2DPolygon aNewCircle = ::basegfx::utils::createPolygonFromEllipse(::basegfx::B2DPoint(0.0, 0.0), 250.0, 250.0); - aNewCircle.setClosed(true); - aCircle.append(aNewCircle); + // connector with arrow start + rAttr.Put(XLineStartItem(SvxResId(RID_SVXSTR_ARROW), aArrow)); + rAttr.Put(XLineStartWidthItem(nWidth)); } + break; - // Square - ::basegfx::B2DPolyPolygon aSquare( getPolygon( RID_SVXSTR_SQUARE, rModel ) ); - if( !aSquare.count() ) + case SID_LINE_ARROW_END: + case SID_LINE_CIRCLE_ARROW: + case SID_LINE_SQUARE_ARROW: { - ::basegfx::B2DPolygon aNewSquare; - aNewSquare.append(::basegfx::B2DPoint(0.0, 0.0)); - aNewSquare.append(::basegfx::B2DPoint(10.0, 0.0)); - aNewSquare.append(::basegfx::B2DPoint(10.0, 10.0)); - aNewSquare.append(::basegfx::B2DPoint(0.0, 10.0)); - aNewSquare.setClosed(true); - aSquare.append(aNewSquare); + // connector with arrow end + rAttr.Put(XLineEndItem(SvxResId(RID_SVXSTR_ARROW), aArrow)); + rAttr.Put(XLineEndWidthItem(nWidth)); } + break; + } - SfxItemSet aSet( rModel.GetItemPool() ); - long nWidth = 200; // (1/100th mm) - - // determine line width and calculate with it the line end width - if( aSet.GetItemState( XATTR_LINEWIDTH ) != SfxItemState::DONTCARE ) + // and again, for the still missing ends + switch (nSlotId) + { + case SID_LINE_ARROW_CIRCLE: { - long nValue = aSet.Get( XATTR_LINEWIDTH ).GetValue(); - if( nValue > 0 ) - nWidth = nValue * 3; + // circle end + rAttr.Put(XLineEndItem(SvxResId(RID_SVXSTR_CIRCLE), aCircle)); + rAttr.Put(XLineEndWidthItem(nWidth)); } + break; - switch (nSlotId) + case SID_LINE_CIRCLE_ARROW: { - case SID_LINE_ARROWS: - case SID_DRAW_MEASURELINE: - { - // connector with arrow ends - rAttr.Put(XLineStartItem(SvxResId(RID_SVXSTR_ARROW), aArrow)); - rAttr.Put(XLineStartWidthItem(nWidth)); - rAttr.Put(XLineEndItem(SvxResId(RID_SVXSTR_ARROW), aArrow)); - rAttr.Put(XLineEndWidthItem(nWidth)); - } - break; - - case SID_LINE_ARROW_START: - case SID_LINE_ARROW_CIRCLE: - case SID_LINE_ARROW_SQUARE: - { - // connector with arrow start - rAttr.Put(XLineStartItem(SvxResId(RID_SVXSTR_ARROW), aArrow)); - rAttr.Put(XLineStartWidthItem(nWidth)); - } - break; - - case SID_LINE_ARROW_END: - case SID_LINE_CIRCLE_ARROW: - case SID_LINE_SQUARE_ARROW: - { - // connector with arrow end - rAttr.Put(XLineEndItem(SvxResId(RID_SVXSTR_ARROW), aArrow)); - rAttr.Put(XLineEndWidthItem(nWidth)); - } - break; + // circle start + rAttr.Put(XLineStartItem(SvxResId(RID_SVXSTR_CIRCLE), aCircle)); + rAttr.Put(XLineStartWidthItem(nWidth)); } + break; - // and again, for the still missing ends - switch (nSlotId) + case SID_LINE_ARROW_SQUARE: { - case SID_LINE_ARROW_CIRCLE: - { - // circle end - rAttr.Put(XLineEndItem(SvxResId(RID_SVXSTR_CIRCLE), aCircle)); - rAttr.Put(XLineEndWidthItem(nWidth)); - } - break; - - case SID_LINE_CIRCLE_ARROW: - { - // circle start - rAttr.Put(XLineStartItem(SvxResId(RID_SVXSTR_CIRCLE), aCircle)); - rAttr.Put(XLineStartWidthItem(nWidth)); - } - break; - - case SID_LINE_ARROW_SQUARE: - { - // square end - rAttr.Put(XLineEndItem(SvxResId(RID_SVXSTR_SQUARE), aSquare)); - rAttr.Put(XLineEndWidthItem(nWidth)); - } - break; + // square end + rAttr.Put(XLineEndItem(SvxResId(RID_SVXSTR_SQUARE), aSquare)); + rAttr.Put(XLineEndWidthItem(nWidth)); + } + break; - case SID_LINE_SQUARE_ARROW: - { - // square start - rAttr.Put(XLineStartItem(SvxResId(RID_SVXSTR_SQUARE), aSquare)); - rAttr.Put(XLineStartWidthItem(nWidth)); - } - break; + case SID_LINE_SQUARE_ARROW: + { + // square start + rAttr.Put(XLineStartItem(SvxResId(RID_SVXSTR_SQUARE), aSquare)); + rAttr.Put(XLineStartWidthItem(nWidth)); } + break; } } diff --git a/sc/source/ui/drawfunc/fudraw.cxx b/sc/source/ui/drawfunc/fudraw.cxx index a07f60d6679a..36abddf039f5 100644 --- a/sc/source/ui/drawfunc/fudraw.cxx +++ b/sc/source/ui/drawfunc/fudraw.cxx @@ -648,59 +648,59 @@ static bool lcl_UrlHit( const SdrView* pView, const Point& rPosPixel, const vcl: void FuDraw::ForcePointer(const MouseEvent* pMEvt) { - if ( !pView->IsAction() ) + if ( pView->IsAction() ) + return; + + Point aPosPixel = pWindow->GetPointerPosPixel(); + bool bAlt = pMEvt && pMEvt->IsMod2(); + Point aPnt = pWindow->PixelToLogic( aPosPixel ); + SdrHdl* pHdl = pView->PickHandle(aPnt); + SdrPageView* pPV; + + ScMacroInfo* pInfo = nullptr; + SdrObject* pObj = pView->PickObj(aPnt, pView->getHitTolLog(), pPV, SdrSearchOptions::ALSOONMASTER); + if (pObj) { - Point aPosPixel = pWindow->GetPointerPosPixel(); - bool bAlt = pMEvt && pMEvt->IsMod2(); - Point aPnt = pWindow->PixelToLogic( aPosPixel ); - SdrHdl* pHdl = pView->PickHandle(aPnt); - SdrPageView* pPV; - - ScMacroInfo* pInfo = nullptr; - SdrObject* pObj = pView->PickObj(aPnt, pView->getHitTolLog(), pPV, SdrSearchOptions::ALSOONMASTER); - if (pObj) + if ( pObj->IsGroupObject() ) { - if ( pObj->IsGroupObject() ) - { - SdrObject* pHit = pView->PickObj(aMDPos, pView->getHitTolLog(), pPV, SdrSearchOptions::DEEP); - if (pHit) - pObj = pHit; - } - pInfo = ScDrawLayer::GetMacroInfo( pObj ); + SdrObject* pHit = pView->PickObj(aMDPos, pView->getHitTolLog(), pPV, SdrSearchOptions::DEEP); + if (pHit) + pObj = pHit; } + pInfo = ScDrawLayer::GetMacroInfo( pObj ); + } - if ( pView->IsTextEdit() ) - { - rViewShell.SetActivePointer(PointerStyle::Text); // can't be ? - } - else if ( pHdl ) - { - rViewShell.SetActivePointer( - pView->GetPreferredPointer( aPnt, pWindow ) ); - } - else if ( pView->IsMarkedHit(aPnt) ) - { - rViewShell.SetActivePointer( PointerStyle::Move ); - } - else if ( !bAlt && ( !pMEvt || !pMEvt->GetButtons() ) - && lcl_UrlHit( pView, aPosPixel, pWindow ) ) - { - // could be suppressed with ALT - pWindow->SetPointer( PointerStyle::RefHand ); // Text-URL / ImageMap - } - else if ( !bAlt && (pObj = pView->PickObj(aPnt, pView->getHitTolLog(), pPV, SdrSearchOptions::PICKMACRO)) ) - { - // could be suppressed with ALT - SdrObjMacroHitRec aHitRec; //! something missing ???? - rViewShell.SetActivePointer( pObj->GetMacroPointer(aHitRec) ); - } - else if ( !bAlt && pInfo && (!pInfo->GetMacro().isEmpty() || !pInfo->GetHlink().isEmpty()) ) - pWindow->SetPointer( PointerStyle::RefHand ); - else if ( IsDetectiveHit( aPnt ) ) - rViewShell.SetActivePointer( PointerStyle::Detective ); - else - rViewShell.SetActivePointer( aNewPointer ); //! in Gridwin? + if ( pView->IsTextEdit() ) + { + rViewShell.SetActivePointer(PointerStyle::Text); // can't be ? + } + else if ( pHdl ) + { + rViewShell.SetActivePointer( + pView->GetPreferredPointer( aPnt, pWindow ) ); + } + else if ( pView->IsMarkedHit(aPnt) ) + { + rViewShell.SetActivePointer( PointerStyle::Move ); + } + else if ( !bAlt && ( !pMEvt || !pMEvt->GetButtons() ) + && lcl_UrlHit( pView, aPosPixel, pWindow ) ) + { + // could be suppressed with ALT + pWindow->SetPointer( PointerStyle::RefHand ); // Text-URL / ImageMap + } + else if ( !bAlt && (pObj = pView->PickObj(aPnt, pView->getHitTolLog(), pPV, SdrSearchOptions::PICKMACRO)) ) + { + // could be suppressed with ALT + SdrObjMacroHitRec aHitRec; //! something missing ???? + rViewShell.SetActivePointer( pObj->GetMacroPointer(aHitRec) ); } + else if ( !bAlt && pInfo && (!pInfo->GetMacro().isEmpty() || !pInfo->GetHlink().isEmpty()) ) + pWindow->SetPointer( PointerStyle::RefHand ); + else if ( IsDetectiveHit( aPnt ) ) + rViewShell.SetActivePointer( PointerStyle::Detective ); + else + rViewShell.SetActivePointer( aNewPointer ); //! in Gridwin? } bool FuDraw::IsEditingANote() const diff --git a/sc/source/ui/drawfunc/fuins1.cxx b/sc/source/ui/drawfunc/fuins1.cxx index 11e2290d08ff..686e00e596a4 100644 --- a/sc/source/ui/drawfunc/fuins1.cxx +++ b/sc/source/ui/drawfunc/fuins1.cxx @@ -392,35 +392,35 @@ FuInsertMedia::FuInsertMedia( ScTabViewShell& rViewSh, } bool bLink(true); - if (bAPI + if (!bAPI #if HAVE_FEATURE_AVMEDIA - || ::avmedia::MediaWindow::executeMediaURLDialog(pWin ? pWin->GetFrameWeld() : nullptr, aURL, &bLink) + || !::avmedia::MediaWindow::executeMediaURLDialog(pWin ? pWin->GetFrameWeld() : nullptr, aURL, &bLink) #endif ) - { - Size aPrefSize; + return; - if( pWin ) - pWin->EnterWait(); + Size aPrefSize; + + if( pWin ) + pWin->EnterWait(); #if HAVE_FEATURE_AVMEDIA - if( !::avmedia::MediaWindow::isMediaURL( aURL, ""/*TODO?*/, true, &aPrefSize ) ) - { - if( pWin ) - pWin->LeaveWait(); + if( !::avmedia::MediaWindow::isMediaURL( aURL, ""/*TODO?*/, true, &aPrefSize ) ) + { + if( pWin ) + pWin->LeaveWait(); - if( !bAPI ) - ::avmedia::MediaWindow::executeFormatErrorBox(pWindow ? pWindow->GetFrameWeld() : nullptr); - } - else + if( !bAPI ) + ::avmedia::MediaWindow::executeFormatErrorBox(pWindow ? pWindow->GetFrameWeld() : nullptr); + } + else #endif - { - lcl_InsertMedia( aURL, bAPI, &rViewSh, pWindow, pView, aPrefSize, - bLink ); + { + lcl_InsertMedia( aURL, bAPI, &rViewSh, pWindow, pView, aPrefSize, + bLink ); - if( pWin ) - pWin->LeaveWait(); - } + if( pWin ) + pWin->LeaveWait(); } } diff --git a/sc/source/ui/drawfunc/fuins2.cxx b/sc/source/ui/drawfunc/fuins2.cxx index 1c30fa935809..0faac4dc664e 100644 --- a/sc/source/ui/drawfunc/fuins2.cxx +++ b/sc/source/ui/drawfunc/fuins2.cxx @@ -116,100 +116,100 @@ void lcl_ChartInit(const uno::Reference & xObj, ScViewDa } } - if (!aRangeString.isEmpty()) - { - // connect to Calc data (if no range string, leave chart alone, with its own data) + if (aRangeString.isEmpty()) + return; - uno::Reference< css::chart2::data::XDataReceiver > xReceiver; - if( xObj.is()) - xReceiver.set( xObj->getComponent(), uno::UNO_QUERY ); - OSL_ASSERT( xReceiver.is()); - if( xReceiver.is() ) - { - uno::Reference xDataProvider; - if (bRangeIsPivotTable) - { - std::unique_ptr pPivotTableDataProvider(new sc::PivotTableDataProvider(&rScDoc)); - pPivotTableDataProvider->setPivotTableName(aRangeString); - xDataProvider.set(pPivotTableDataProvider.release()); - } - else - { - xDataProvider.set(new ScChart2DataProvider(&rScDoc)); - } + // connect to Calc data (if no range string, leave chart alone, with its own data) - xReceiver->attachDataProvider(xDataProvider); + uno::Reference< css::chart2::data::XDataReceiver > xReceiver; + if( xObj.is()) + xReceiver.set( xObj->getComponent(), uno::UNO_QUERY ); + OSL_ASSERT( xReceiver.is()); + if( !xReceiver.is() ) + return; - uno::Reference< util::XNumberFormatsSupplier > xNumberFormatsSupplier( pDocShell->GetModel(), uno::UNO_QUERY ); - xReceiver->attachNumberFormatsSupplier( xNumberFormatsSupplier ); + uno::Reference xDataProvider; + if (bRangeIsPivotTable) + { + std::unique_ptr pPivotTableDataProvider(new sc::PivotTableDataProvider(&rScDoc)); + pPivotTableDataProvider->setPivotTableName(aRangeString); + xDataProvider.set(pPivotTableDataProvider.release()); + } + else + { + xDataProvider.set(new ScChart2DataProvider(&rScDoc)); + } - // Same behavior as with old chart: Always assume data series in columns - chart::ChartDataRowSource eDataRowSource = chart::ChartDataRowSource_COLUMNS; - bool bHasCategories = false; - bool bFirstCellAsLabel = false; + xReceiver->attachDataProvider(xDataProvider); - // use ScChartPositioner to auto-detect column/row headers (like ScChartArray in old version) - ScRangeListRef aRangeListRef( new ScRangeList ); - aRangeListRef->Parse( aRangeString, &rScDoc, rScDoc.GetAddressConvention() ); - if ( !aRangeListRef->empty() ) - { - rScDoc.LimitChartIfAll( aRangeListRef ); // limit whole columns/rows to used area + uno::Reference< util::XNumberFormatsSupplier > xNumberFormatsSupplier( pDocShell->GetModel(), uno::UNO_QUERY ); + xReceiver->attachNumberFormatsSupplier( xNumberFormatsSupplier ); - // update string from modified ranges. The ranges must be in the current formula syntax. - OUString aTmpStr; - aRangeListRef->Format( aTmpStr, ScRefFlags::RANGE_ABS_3D, rScDoc, rScDoc.GetAddressConvention() ); - aRangeString = aTmpStr; + // Same behavior as with old chart: Always assume data series in columns + chart::ChartDataRowSource eDataRowSource = chart::ChartDataRowSource_COLUMNS; + bool bHasCategories = false; + bool bFirstCellAsLabel = false; - ScChartPositioner aChartPositioner( &rScDoc, aRangeListRef ); - const ScChartPositionMap* pPositionMap( aChartPositioner.GetPositionMap() ); - if( pPositionMap ) - { - SCSIZE nRowCount = pPositionMap->GetRowCount(); - if( 1==nRowCount ) - eDataRowSource = chart::ChartDataRowSource_ROWS; - } - if ( eDataRowSource == chart::ChartDataRowSource_COLUMNS ) - { - bHasCategories = aChartPositioner.HasRowHeaders(); - bFirstCellAsLabel = aChartPositioner.HasColHeaders(); - } - else // in case the default is changed - { - bHasCategories = aChartPositioner.HasColHeaders(); - bFirstCellAsLabel = aChartPositioner.HasRowHeaders(); - } - } + // use ScChartPositioner to auto-detect column/row headers (like ScChartArray in old version) + ScRangeListRef aRangeListRef( new ScRangeList ); + aRangeListRef->Parse( aRangeString, &rScDoc, rScDoc.GetAddressConvention() ); + if ( !aRangeListRef->empty() ) + { + rScDoc.LimitChartIfAll( aRangeListRef ); // limit whole columns/rows to used area - uno::Sequence< beans::PropertyValue > aArgs( 4 ); - aArgs[0] = beans::PropertyValue( - "CellRangeRepresentation", -1, - uno::makeAny( aRangeString ), beans::PropertyState_DIRECT_VALUE ); - aArgs[1] = beans::PropertyValue( - "HasCategories", -1, - uno::makeAny( bHasCategories ), beans::PropertyState_DIRECT_VALUE ); - aArgs[2] = beans::PropertyValue( - "FirstCellAsLabel", -1, - uno::makeAny( bFirstCellAsLabel ), beans::PropertyState_DIRECT_VALUE ); - aArgs[3] = beans::PropertyValue( - "DataRowSource", -1, - uno::makeAny( eDataRowSource ), beans::PropertyState_DIRECT_VALUE ); - - try - { - xReceiver->setArguments( aArgs ); - } - catch (const lang::IllegalArgumentException&) - { - // Can happen for invalid aRangeString, in which case a Chart - // will be created nevertheless and the range string can be - // edited. - TOOLS_WARN_EXCEPTION("sc.ui", - "lcl_ChartInit - caught IllegalArgumentException might be due to aRangeString: " << aRangeString); - } + // update string from modified ranges. The ranges must be in the current formula syntax. + OUString aTmpStr; + aRangeListRef->Format( aTmpStr, ScRefFlags::RANGE_ABS_3D, rScDoc, rScDoc.GetAddressConvention() ); + aRangeString = aTmpStr; - // don't create chart listener here (range may be modified in chart dialog) + ScChartPositioner aChartPositioner( &rScDoc, aRangeListRef ); + const ScChartPositionMap* pPositionMap( aChartPositioner.GetPositionMap() ); + if( pPositionMap ) + { + SCSIZE nRowCount = pPositionMap->GetRowCount(); + if( 1==nRowCount ) + eDataRowSource = chart::ChartDataRowSource_ROWS; } + if ( eDataRowSource == chart::ChartDataRowSource_COLUMNS ) + { + bHasCategories = aChartPositioner.HasRowHeaders(); + bFirstCellAsLabel = aChartPositioner.HasColHeaders(); + } + else // in case the default is changed + { + bHasCategories = aChartPositioner.HasColHeaders(); + bFirstCellAsLabel = aChartPositioner.HasRowHeaders(); + } + } + + uno::Sequence< beans::PropertyValue > aArgs( 4 ); + aArgs[0] = beans::PropertyValue( + "CellRangeRepresentation", -1, + uno::makeAny( aRangeString ), beans::PropertyState_DIRECT_VALUE ); + aArgs[1] = beans::PropertyValue( + "HasCategories", -1, + uno::makeAny( bHasCategories ), beans::PropertyState_DIRECT_VALUE ); + aArgs[2] = beans::PropertyValue( + "FirstCellAsLabel", -1, + uno::makeAny( bFirstCellAsLabel ), beans::PropertyState_DIRECT_VALUE ); + aArgs[3] = beans::PropertyValue( + "DataRowSource", -1, + uno::makeAny( eDataRowSource ), beans::PropertyState_DIRECT_VALUE ); + + try + { + xReceiver->setArguments( aArgs ); } + catch (const lang::IllegalArgumentException&) + { + // Can happen for invalid aRangeString, in which case a Chart + // will be created nevertheless and the range string can be + // edited. + TOOLS_WARN_EXCEPTION("sc.ui", + "lcl_ChartInit - caught IllegalArgumentException might be due to aRangeString: " << aRangeString); + } + + // don't create chart listener here (range may be modified in chart dialog) } } diff --git a/sc/source/ui/drawfunc/futext.cxx b/sc/source/ui/drawfunc/futext.cxx index 5405ca2c608a..9e412449917c 100644 --- a/sc/source/ui/drawfunc/futext.cxx +++ b/sc/source/ui/drawfunc/futext.cxx @@ -549,73 +549,73 @@ void FuText::SetInEditMode(SdrObject* pObj, const Point* pMousePixel, } } - if ( pObj ) - { - sal_uInt16 nSdrObjKind = pObj->GetObjIdentifier(); + if ( !pObj ) + return; - if (nSdrObjKind == OBJ_TEXT || - nSdrObjKind == OBJ_TITLETEXT || - nSdrObjKind == OBJ_OUTLINETEXT || - dynamic_cast( pObj) != nullptr) - { - SdrPageView* pPV = pView->GetSdrPageView(); + sal_uInt16 nSdrObjKind = pObj->GetObjIdentifier(); - if ( pObj->HasTextEdit() ) - { - std::unique_ptr pO = MakeOutliner(); - lcl_UpdateHyphenator( *pO, pObj ); + if (!(nSdrObjKind == OBJ_TEXT || + nSdrObjKind == OBJ_TITLETEXT || + nSdrObjKind == OBJ_OUTLINETEXT || + dynamic_cast( pObj) != nullptr)) + return; - // vertical flag: - // deduced from slot ids only if text object has no content + SdrPageView* pPV = pView->GetSdrPageView(); - sal_uInt16 nSlotID = aSfxRequest.GetSlot(); - bool bVertical = ( nSlotID == SID_DRAW_TEXT_VERTICAL ); - OutlinerParaObject* pOPO = pObj->GetOutlinerParaObject(); - if ( pOPO ) - bVertical = pOPO->IsVertical(); // content wins - pO->SetVertical( bVertical ); + if ( !pObj->HasTextEdit() ) + return; - //!?? without returned Outliner the defaults are not correct ???!? - auto pOTemp = pO.get(); - if ( pView->SdrBeginTextEdit(pObj, pPV, pWindow, true, pO.release()) ) - { - // Toggle out of paste mode if we are in it, otherwise - // pressing return in this object will instead go to the - // sheet and be considered an overwrite-cell instruction - rViewShell.GetViewData().SetPasteMode(ScPasteFlags::NONE); - rViewShell.UpdateCopySourceOverlay(); + std::unique_ptr pO = MakeOutliner(); + lcl_UpdateHyphenator( *pO, pObj ); - // EditEngine-UndoManager anmelden - rViewShell.SetDrawTextUndo( &pOTemp->GetUndoManager() ); + // vertical flag: + // deduced from slot ids only if text object has no content - pView->SetEditMode(); + sal_uInt16 nSlotID = aSfxRequest.GetSlot(); + bool bVertical = ( nSlotID == SID_DRAW_TEXT_VERTICAL ); + OutlinerParaObject* pOPO = pObj->GetOutlinerParaObject(); + if ( pOPO ) + bVertical = pOPO->IsVertical(); // content wins + pO->SetVertical( bVertical ); - // set text cursor to click position or to end, - // pass initial key event to outliner view - if ( pMousePixel || bCursorToEnd || pInitialKey ) - { - OutlinerView* pOLV = pView->GetTextEditOutlinerView(); - if (pOLV) - { - if ( pMousePixel ) - { - MouseEvent aEditEvt( *pMousePixel, 1, MouseEventModifiers::SYNTHETIC, MOUSE_LEFT, 0 ); - pOLV->MouseButtonDown(aEditEvt); - pOLV->MouseButtonUp(aEditEvt); - } - else if ( bCursorToEnd ) - { - ESelection aNewSelection(EE_PARA_NOT_FOUND, EE_INDEX_NOT_FOUND, EE_PARA_NOT_FOUND, EE_INDEX_NOT_FOUND); - pOLV->SetSelection(aNewSelection); - } - - if ( pInitialKey ) - pOLV->PostKeyEvent( *pInitialKey ); - } - } - } - } + //!?? without returned Outliner the defaults are not correct ???!? + auto pOTemp = pO.get(); + if ( !pView->SdrBeginTextEdit(pObj, pPV, pWindow, true, pO.release()) ) + return; + + // Toggle out of paste mode if we are in it, otherwise + // pressing return in this object will instead go to the + // sheet and be considered an overwrite-cell instruction + rViewShell.GetViewData().SetPasteMode(ScPasteFlags::NONE); + rViewShell.UpdateCopySourceOverlay(); + + // EditEngine-UndoManager anmelden + rViewShell.SetDrawTextUndo( &pOTemp->GetUndoManager() ); + + pView->SetEditMode(); + + // set text cursor to click position or to end, + // pass initial key event to outliner view + if ( !(pMousePixel || bCursorToEnd || pInitialKey) ) + return; + + OutlinerView* pOLV = pView->GetTextEditOutlinerView(); + if (pOLV) + { + if ( pMousePixel ) + { + MouseEvent aEditEvt( *pMousePixel, 1, MouseEventModifiers::SYNTHETIC, MOUSE_LEFT, 0 ); + pOLV->MouseButtonDown(aEditEvt); + pOLV->MouseButtonUp(aEditEvt); } + else if ( bCursorToEnd ) + { + ESelection aNewSelection(EE_PARA_NOT_FOUND, EE_INDEX_NOT_FOUND, EE_PARA_NOT_FOUND, EE_INDEX_NOT_FOUND); + pOLV->SetSelection(aNewSelection); + } + + if ( pInitialKey ) + pOLV->PostKeyEvent( *pInitialKey ); } } diff --git a/sc/source/ui/drawfunc/futext3.cxx b/sc/source/ui/drawfunc/futext3.cxx index a41a64b8a684..307cd87ec609 100644 --- a/sc/source/ui/drawfunc/futext3.cxx +++ b/sc/source/ui/drawfunc/futext3.cxx @@ -108,74 +108,74 @@ void FuText::StopEditMode() if( pCur && pCur->IsVisible() ) pCur->Hide(); - if( pNote ) - { - ScTabView::OnLOKNoteStateChanged( pNote ); + if( !pNote ) + return; - // hide the caption object if it is in hidden state - pNote->ShowCaptionTemp( aNotePos, false ); + ScTabView::OnLOKNoteStateChanged( pNote ); - // update author and date - pNote->AutoStamp(); + // hide the caption object if it is in hidden state + pNote->ShowCaptionTemp( aNotePos, false ); - /* If the entire text has been cleared, the cell note and its caption - object have to be removed. */ - SdrTextObj* pTextObject = dynamic_cast< SdrTextObj* >( pObject ); - bool bDeleteNote = !pTextObject || !pTextObject->HasText(); - if( bDeleteNote ) - { - if( pUndoMgr ) - { - // collect the "remove object" drawing undo action created by DeleteNote() - pDrawLayer->BeginCalcUndo(false); - // rescue note data before deletion - ScNoteData aNoteData( pNote->GetNoteData() ); - // delete note from document (removes caption, but does not delete it) - rDoc.ReleaseNote(aNotePos); - // create undo action for removed note - pUndoMgr->AddUndoAction( std::make_unique( *pDocShell, aNotePos, aNoteData, false, pDrawLayer->GetCalcUndo() ) ); - } - else - { - rDoc.ReleaseNote(aNotePos); - } - // ScDocument::DeleteNote has deleted the note that pNote points to - pNote = nullptr; - } + // update author and date + pNote->AutoStamp(); - // finalize the undo list action + /* If the entire text has been cleared, the cell note and its caption + object have to be removed. */ + SdrTextObj* pTextObject = dynamic_cast< SdrTextObj* >( pObject ); + bool bDeleteNote = !pTextObject || !pTextObject->HasText(); + if( bDeleteNote ) + { if( pUndoMgr ) { - pUndoMgr->LeaveListAction(); - - /* #i94039# Update the default name "Edit Note" of the undo action - if the note has been created before editing or is deleted due - to deleted text. If the note has been created *and* is deleted, - the last undo action can be removed completely. Note: The - function LeaveListAction() removes the last action by itself, - if it is empty (when result is SdrEndTextEditKind::Unchanged). */ - if( bNewNote && bDeleteNote ) - { - pUndoMgr->RemoveLastUndoAction(); - - // Make sure the former area of the note anchor is invalidated. - ScRangeList aRangeList(aNotePos); - ScMarkData aMarkData(rDoc.GetSheetLimits(), aRangeList); - rViewShell.UpdateSelectionArea(aMarkData); - } - else if( bNewNote || bDeleteNote ) - { - SfxListUndoAction* pAction = dynamic_cast< SfxListUndoAction* >( pUndoMgr->GetUndoAction() ); - OSL_ENSURE( pAction, "FuText::StopEditMode - list undo action expected" ); - if( pAction ) - pAction->SetComment( ScResId( bNewNote ? STR_UNDO_INSERTNOTE : STR_UNDO_DELETENOTE ) ); - } + // collect the "remove object" drawing undo action created by DeleteNote() + pDrawLayer->BeginCalcUndo(false); + // rescue note data before deletion + ScNoteData aNoteData( pNote->GetNoteData() ); + // delete note from document (removes caption, but does not delete it) + rDoc.ReleaseNote(aNotePos); + // create undo action for removed note + pUndoMgr->AddUndoAction( std::make_unique( *pDocShell, aNotePos, aNoteData, false, pDrawLayer->GetCalcUndo() ) ); + } + else + { + rDoc.ReleaseNote(aNotePos); } + // ScDocument::DeleteNote has deleted the note that pNote points to + pNote = nullptr; + } + + // finalize the undo list action + if( pUndoMgr ) + { + pUndoMgr->LeaveListAction(); + + /* #i94039# Update the default name "Edit Note" of the undo action + if the note has been created before editing or is deleted due + to deleted text. If the note has been created *and* is deleted, + the last undo action can be removed completely. Note: The + function LeaveListAction() removes the last action by itself, + if it is empty (when result is SdrEndTextEditKind::Unchanged). */ + if( bNewNote && bDeleteNote ) + { + pUndoMgr->RemoveLastUndoAction(); - // invalidate stream positions only for the affected sheet - rDoc.LockStreamValid(false); - rDoc.SetStreamValid(aNotePos.Tab(), false); + // Make sure the former area of the note anchor is invalidated. + ScRangeList aRangeList(aNotePos); + ScMarkData aMarkData(rDoc.GetSheetLimits(), aRangeList); + rViewShell.UpdateSelectionArea(aMarkData); + } + else if( bNewNote || bDeleteNote ) + { + SfxListUndoAction* pAction = dynamic_cast< SfxListUndoAction* >( pUndoMgr->GetUndoAction() ); + OSL_ENSURE( pAction, "FuText::StopEditMode - list undo action expected" ); + if( pAction ) + pAction->SetComment( ScResId( bNewNote ? STR_UNDO_INSERTNOTE : STR_UNDO_DELETENOTE ) ); + } } + + // invalidate stream positions only for the affected sheet + rDoc.LockStreamValid(false); + rDoc.SetStreamValid(aNotePos.Tab(), false); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/drawfunc/mediash.cxx b/sc/source/ui/drawfunc/mediash.cxx index b70c5cb31d23..4ab6c187bb83 100644 --- a/sc/source/ui/drawfunc/mediash.cxx +++ b/sc/source/ui/drawfunc/mediash.cxx @@ -60,38 +60,38 @@ void ScMediaShell::GetMediaState( SfxItemSet& rSet ) { ScDrawView* pView = GetViewData()->GetScDrawView(); - if( pView ) - { - SfxWhichIter aIter( rSet ); - sal_uInt16 nWhich = aIter.FirstWhich(); + if( !pView ) + return; + + SfxWhichIter aIter( rSet ); + sal_uInt16 nWhich = aIter.FirstWhich(); - while( nWhich ) + while( nWhich ) + { + if( SID_AVMEDIA_TOOLBOX == nWhich ) { - if( SID_AVMEDIA_TOOLBOX == nWhich ) + std::unique_ptr pMarkList(new SdrMarkList( pView->GetMarkedObjectList() )); + bool bDisable = true; + + if( 1 == pMarkList->GetMarkCount() ) { - std::unique_ptr pMarkList(new SdrMarkList( pView->GetMarkedObjectList() )); - bool bDisable = true; + SdrObject* pObj = pMarkList->GetMark( 0 )->GetMarkedSdrObj(); - if( 1 == pMarkList->GetMarkCount() ) + if( dynamic_cast( pObj) ) { - SdrObject* pObj = pMarkList->GetMark( 0 )->GetMarkedSdrObj(); - - if( dynamic_cast( pObj) ) - { - ::avmedia::MediaItem aItem( SID_AVMEDIA_TOOLBOX ); + ::avmedia::MediaItem aItem( SID_AVMEDIA_TOOLBOX ); - static_cast< sdr::contact::ViewContactOfSdrMediaObj& >( pObj->GetViewContact() ).updateMediaItem( aItem ); - rSet.Put( aItem ); - bDisable = false; - } + static_cast< sdr::contact::ViewContactOfSdrMediaObj& >( pObj->GetViewContact() ).updateMediaItem( aItem ); + rSet.Put( aItem ); + bDisable = false; } - - if( bDisable ) - rSet.DisableItem( SID_AVMEDIA_TOOLBOX ); } - nWhich = aIter.NextWhich(); + if( bDisable ) + rSet.DisableItem( SID_AVMEDIA_TOOLBOX ); } + + nWhich = aIter.NextWhich(); } } diff --git a/sc/source/ui/formdlg/formula.cxx b/sc/source/ui/formdlg/formula.cxx index 9bd22bc4b0e2..de2c41cfed0b 100644 --- a/sc/source/ui/formdlg/formula.cxx +++ b/sc/source/ui/formdlg/formula.cxx @@ -109,72 +109,72 @@ ScFormulaDlg::ScFormulaDlg(SfxBindings* pB, SfxChildWindow* pCW, fill(); ScFormEditData* pData = m_pViewShell->GetFormEditData(); - if (!pData) - { - pScMod->SetRefInputHdl(pInputHdl); - - m_pDoc = pViewData->GetDocument(); - SCCOL nCol = pViewData->GetCurX(); - SCROW nRow = pViewData->GetCurY(); - SCTAB nTab = pViewData->GetTabNo(); - m_CursorPos = ScAddress( nCol, nRow, nTab ); + if (pData) + return; - m_pViewShell->InitFormEditData(); // create new - pData = m_pViewShell->GetFormEditData(); - pData->SetInputHandler(pInputHdl); - pData->SetDocShell(pViewData->GetDocShell()); + pScMod->SetRefInputHdl(pInputHdl); - OSL_ENSURE(pData,"FormEditData not available"); + m_pDoc = pViewData->GetDocument(); + SCCOL nCol = pViewData->GetCurX(); + SCROW nRow = pViewData->GetCurY(); + SCTAB nTab = pViewData->GetTabNo(); + m_CursorPos = ScAddress( nCol, nRow, nTab ); - formula::FormulaDlgMode eMode = FormulaDlgMode::Formula; // default... + m_pViewShell->InitFormEditData(); // create new + pData = m_pViewShell->GetFormEditData(); + pData->SetInputHandler(pInputHdl); + pData->SetDocShell(pViewData->GetDocShell()); - // edit if formula exists + OSL_ENSURE(pData,"FormEditData not available"); - OUString aFormula; - m_pDoc->GetFormula( nCol, nRow, nTab, aFormula ); - bool bEdit = ( aFormula.getLength() > 1 ); - bool bMatrix = false; - if ( bEdit ) - { - bMatrix = CheckMatrix(aFormula); + formula::FormulaDlgMode eMode = FormulaDlgMode::Formula; // default... - sal_Int32 nFStart = 0; - sal_Int32 nFEnd = 0; - if ( GetFormulaHelper().GetNextFunc( aFormula, false, nFStart, &nFEnd) ) - { - pInputHdl->InputReplaceSelection( aFormula ); - pInputHdl->InputSetSelection( nFStart, nFEnd ); - sal_Int32 PrivStart, PrivEnd; - pInputHdl->InputGetSelection( PrivStart, PrivEnd); + // edit if formula exists - eMode = SetMeText(pInputHdl->GetFormString(),PrivStart, PrivEnd, bMatrix, true, true); - pData->SetFStart( nFStart ); - } - else - bEdit = false; - } + OUString aFormula; + m_pDoc->GetFormula( nCol, nRow, nTab, aFormula ); + bool bEdit = ( aFormula.getLength() > 1 ); + bool bMatrix = false; + if ( bEdit ) + { + bMatrix = CheckMatrix(aFormula); - if ( !bEdit ) + sal_Int32 nFStart = 0; + sal_Int32 nFEnd = 0; + if ( GetFormulaHelper().GetNextFunc( aFormula, false, nFStart, &nFEnd) ) { - OUString aNewFormula('='); - if ( aFormula.startsWith("=") ) - aNewFormula = aFormula; - - pInputHdl->InputReplaceSelection( aNewFormula ); - pInputHdl->InputSetSelection( 1, aNewFormula.getLength()+1 ); + pInputHdl->InputReplaceSelection( aFormula ); + pInputHdl->InputSetSelection( nFStart, nFEnd ); sal_Int32 PrivStart, PrivEnd; pInputHdl->InputGetSelection( PrivStart, PrivEnd); - SetMeText(pInputHdl->GetFormString(),PrivStart, PrivEnd,bMatrix,false,false); - pData->SetFStart( 1 ); // after "=" + eMode = SetMeText(pInputHdl->GetFormString(),PrivStart, PrivEnd, bMatrix, true, true); + pData->SetFStart( nFStart ); } + else + bEdit = false; + } - pData->SetMode( eMode ); - OUString rStrExp = GetMeText(); + if ( !bEdit ) + { + OUString aNewFormula('='); + if ( aFormula.startsWith("=") ) + aNewFormula = aFormula; + + pInputHdl->InputReplaceSelection( aNewFormula ); + pInputHdl->InputSetSelection( 1, aNewFormula.getLength()+1 ); + sal_Int32 PrivStart, PrivEnd; + pInputHdl->InputGetSelection( PrivStart, PrivEnd); + SetMeText(pInputHdl->GetFormString(),PrivStart, PrivEnd,bMatrix,false,false); - Update(rStrExp); + pData->SetFStart( 1 ); // after "=" } + pData->SetMode( eMode ); + OUString rStrExp = GetMeText(); + + Update(rStrExp); + } void ScFormulaDlg::notifyChange() @@ -190,45 +190,45 @@ void ScFormulaDlg::fill() ScFormEditData* pData = static_cast(getFormEditData()); notifyChange(); OUString rStrExp; - if (pData) + if (!pData) + return; + + // data exists -> restore state (after switch) + // don't reinitialise m_pDoc and m_CursorPos + //pDoc = pViewData->GetDocument(); + if(IsInputHdl(pData->GetInputHandler())) { - // data exists -> restore state (after switch) - // don't reinitialise m_pDoc and m_CursorPos - //pDoc = pViewData->GetDocument(); - if(IsInputHdl(pData->GetInputHandler())) + pScMod->SetRefInputHdl(pData->GetInputHandler()); + } + else + { + ScTabViewShell* pTabViewShell; + ScInputHandler* pInputHdl = GetNextInputHandler(pData->GetDocShell(),&pTabViewShell); + + if ( pInputHdl == nullptr ) //no more InputHandler for DocShell { - pScMod->SetRefInputHdl(pData->GetInputHandler()); + disableOk(); + pInputHdl = pScMod->GetInputHdl(); } else { - ScTabViewShell* pTabViewShell; - ScInputHandler* pInputHdl = GetNextInputHandler(pData->GetDocShell(),&pTabViewShell); - - if ( pInputHdl == nullptr ) //no more InputHandler for DocShell - { - disableOk(); - pInputHdl = pScMod->GetInputHdl(); - } - else - { - pInputHdl->SetRefViewShell(pTabViewShell); - } - pScMod->SetRefInputHdl(pInputHdl); - pData->SetInputHandler(pInputHdl); + pInputHdl->SetRefViewShell(pTabViewShell); } + pScMod->SetRefInputHdl(pInputHdl); + pData->SetInputHandler(pInputHdl); + } - OUString aOldFormulaTmp(pData->GetInputHandler()->GetFormString()); - pData->GetInputHandler()->InputSetSelection( 0, aOldFormulaTmp.getLength()); + OUString aOldFormulaTmp(pData->GetInputHandler()->GetFormString()); + pData->GetInputHandler()->InputSetSelection( 0, aOldFormulaTmp.getLength()); - rStrExp=pData->GetUndoStr(); - pData->GetInputHandler()->InputReplaceSelection(rStrExp); + rStrExp=pData->GetUndoStr(); + pData->GetInputHandler()->InputReplaceSelection(rStrExp); - SetMeText(rStrExp); + SetMeText(rStrExp); - Update(); - // switch back, maybe new Doc has been opened - pScMod->SetRefInputHdl(nullptr); - } + Update(); + // switch back, maybe new Doc has been opened + pScMod->SetRefInputHdl(nullptr); } ScFormulaDlg::~ScFormulaDlg() COVERITY_NOEXCEPT_FALSE @@ -395,62 +395,62 @@ void ScFormulaDlg::RefInputDone( bool bForced ) void ScFormulaDlg::SetReference( const ScRange& rRef, ScDocument& rRefDoc ) { const IFunctionDescription* pFunc = getCurrentFunctionDescription(); - if ( pFunc && pFunc->getSuppressedArgumentCount() > 0 ) - { - Selection theSel; - bool bRefNull = UpdateParaWin(theSel); + if ( !(pFunc && pFunc->getSuppressedArgumentCount() > 0) ) + return; - if ( rRef.aStart != rRef.aEnd && bRefNull ) - { - RefInputStart(GetActiveEdit()); - } + Selection theSel; + bool bRefNull = UpdateParaWin(theSel); - OUString aRefStr; - bool bOtherDoc = (&rRefDoc != m_pDoc && rRefDoc.GetDocumentShell()->HasName()); - if ( bOtherDoc ) - { - // reference to other document - like inputhdl.cxx + if ( rRef.aStart != rRef.aEnd && bRefNull ) + { + RefInputStart(GetActiveEdit()); + } + + OUString aRefStr; + bool bOtherDoc = (&rRefDoc != m_pDoc && rRefDoc.GetDocumentShell()->HasName()); + if ( bOtherDoc ) + { + // reference to other document - like inputhdl.cxx - OSL_ENSURE(rRef.aStart.Tab()==rRef.aEnd.Tab(), "nStartTab!=nEndTab"); + OSL_ENSURE(rRef.aStart.Tab()==rRef.aEnd.Tab(), "nStartTab!=nEndTab"); - // Always 3D and absolute. - OUString aTmp( rRef.Format(rRefDoc, ScRefFlags::VALID | ScRefFlags::TAB_ABS_3D)); + // Always 3D and absolute. + OUString aTmp( rRef.Format(rRefDoc, ScRefFlags::VALID | ScRefFlags::TAB_ABS_3D)); - SfxObjectShell* pObjSh = rRefDoc.GetDocumentShell(); + SfxObjectShell* pObjSh = rRefDoc.GetDocumentShell(); - // #i75893# convert escaped URL of the document to something user friendly + // #i75893# convert escaped URL of the document to something user friendly // OUString aFileName = pObjSh->GetMedium()->GetName(); - OUString aFileName = pObjSh->GetMedium()->GetURLObject().GetMainURL( INetURLObject::DecodeMechanism::Unambiguous ); + OUString aFileName = pObjSh->GetMedium()->GetURLObject().GetMainURL( INetURLObject::DecodeMechanism::Unambiguous ); - aRefStr = "'" + aFileName + "'#" + aTmp; - } - else + aRefStr = "'" + aFileName + "'#" + aTmp; + } + else + { + // We can't use ScRange::Format here because in R1C1 mode we need + // to display the reference position relative to the cursor + // position. + ScTokenArray aArray(&rRefDoc); + ScComplexRefData aRefData; + aRefData.InitRangeRel(&rRefDoc, rRef, m_CursorPos); + bool bSingle = aRefData.Ref1 == aRefData.Ref2; + if (m_CursorPos.Tab() != rRef.aStart.Tab()) { - // We can't use ScRange::Format here because in R1C1 mode we need - // to display the reference position relative to the cursor - // position. - ScTokenArray aArray(&rRefDoc); - ScComplexRefData aRefData; - aRefData.InitRangeRel(&rRefDoc, rRef, m_CursorPos); - bool bSingle = aRefData.Ref1 == aRefData.Ref2; - if (m_CursorPos.Tab() != rRef.aStart.Tab()) - { - // pointer-selected => absolute sheet reference - aRefData.Ref1.SetAbsTab( rRef.aStart.Tab() ); - aRefData.Ref1.SetFlag3D(true); - } - if (bSingle) - aArray.AddSingleReference(aRefData.Ref1); - else - aArray.AddDoubleReference(aRefData); - ScCompiler aComp(m_pDoc, m_CursorPos, aArray, m_pDoc->GetGrammar()); - OUStringBuffer aBuf; - aComp.CreateStringFromTokenArray(aBuf); - aRefStr = aBuf.makeStringAndClear(); + // pointer-selected => absolute sheet reference + aRefData.Ref1.SetAbsTab( rRef.aStart.Tab() ); + aRefData.Ref1.SetFlag3D(true); } - - UpdateParaWin(theSel,aRefStr); + if (bSingle) + aArray.AddSingleReference(aRefData.Ref1); + else + aArray.AddDoubleReference(aRefData); + ScCompiler aComp(m_pDoc, m_CursorPos, aArray, m_pDoc->GetGrammar()); + OUStringBuffer aBuf; + aComp.CreateStringFromTokenArray(aBuf); + aRefStr = aBuf.makeStringAndClear(); } + + UpdateParaWin(theSel,aRefStr); } bool ScFormulaDlg::IsRefInputMode() const @@ -585,19 +585,19 @@ void ScFormulaDlg::switchBack() // restore current chart (cause mouse-RefInput) ScTabViewShell* pScViewShell = dynamic_cast( SfxViewShell::Current() ); - if ( pScViewShell ) - { - ScViewData& rVD=pScViewShell->GetViewData(); - SCTAB nExecTab = m_CursorPos.Tab(); - if ( nExecTab != rVD.GetTabNo() ) - pScViewShell->SetTabNo( nExecTab ); + if ( !pScViewShell ) + return; - SCROW nRow = m_CursorPos.Row(); - SCCOL nCol = m_CursorPos.Col(); + ScViewData& rVD=pScViewShell->GetViewData(); + SCTAB nExecTab = m_CursorPos.Tab(); + if ( nExecTab != rVD.GetTabNo() ) + pScViewShell->SetTabNo( nExecTab ); - if(rVD.GetCurX()!=nCol || rVD.GetCurY()!=nRow) - pScViewShell->SetCursor(nCol,nRow); - } + SCROW nRow = m_CursorPos.Row(); + SCCOL nCol = m_CursorPos.Col(); + + if(rVD.GetCurX()!=nCol || rVD.GetCurY()!=nRow) + pScViewShell->SetCursor(nCol,nRow); } formula::FormEditData* ScFormulaDlg::getFormEditData() const { diff --git a/sc/source/ui/namedlg/namedlg.cxx b/sc/source/ui/namedlg/namedlg.cxx index 7c3a91e320af..dbc3180a2ad7 100644 --- a/sc/source/ui/namedlg/namedlg.cxx +++ b/sc/source/ui/namedlg/namedlg.cxx @@ -372,34 +372,34 @@ void ScNameDlg::NameModified() ScRangeName* pNewRangeName = GetRangeName( aNewScope ); OSL_ENSURE(pData, "model and table should be in sync"); // be safe and check for range data - if (pData) - { - // Assign new index (0) only if the scope is changed, else keep the - // existing index. - sal_uInt16 nIndex = (aNewScope != aOldScope ? 0 : pData->GetIndex()); - - pOldRangeName->erase(*pData); - m_xRangeManagerTable->BlockUpdate(); - m_xRangeManagerTable->DeleteSelectedEntries(); - ScRangeData::Type nType = ScRangeData::Type::Name; - if ( m_xBtnRowHeader->get_active() ) nType |= ScRangeData::Type::RowHeader; - if ( m_xBtnColHeader->get_active() ) nType |= ScRangeData::Type::ColHeader; - if ( m_xBtnPrintArea->get_active() ) nType |= ScRangeData::Type::PrintArea; - if ( m_xBtnCriteria->get_active() ) nType |= ScRangeData::Type::Criteria; - - ScRangeData* pNewEntry = new ScRangeData( mpDoc, aNewName, aExpr, - maCursorPos, nType); - pNewEntry->SetIndex( nIndex); - pNewRangeName->insert(pNewEntry, false /*bReuseFreeIndex*/); - aLine.aName = aNewName; - aLine.aExpression = aExpr; - aLine.aScope = aNewScope; - m_xRangeManagerTable->addEntry(aLine, true); - // tdf#128137 process pending async row change events while UpdatesBlocked in place - Application::Reschedule(true); - m_xRangeManagerTable->UnblockUpdate(); - mbDataChanged = true; - } + if (!pData) + return; + + // Assign new index (0) only if the scope is changed, else keep the + // existing index. + sal_uInt16 nIndex = (aNewScope != aOldScope ? 0 : pData->GetIndex()); + + pOldRangeName->erase(*pData); + m_xRangeManagerTable->BlockUpdate(); + m_xRangeManagerTable->DeleteSelectedEntries(); + ScRangeData::Type nType = ScRangeData::Type::Name; + if ( m_xBtnRowHeader->get_active() ) nType |= ScRangeData::Type::RowHeader; + if ( m_xBtnColHeader->get_active() ) nType |= ScRangeData::Type::ColHeader; + if ( m_xBtnPrintArea->get_active() ) nType |= ScRangeData::Type::PrintArea; + if ( m_xBtnCriteria->get_active() ) nType |= ScRangeData::Type::Criteria; + + ScRangeData* pNewEntry = new ScRangeData( mpDoc, aNewName, aExpr, + maCursorPos, nType); + pNewEntry->SetIndex( nIndex); + pNewRangeName->insert(pNewEntry, false /*bReuseFreeIndex*/); + aLine.aName = aNewName; + aLine.aExpression = aExpr; + aLine.aScope = aNewScope; + m_xRangeManagerTable->addEntry(aLine, true); + // tdf#128137 process pending async row change events while UpdatesBlocked in place + Application::Reschedule(true); + m_xRangeManagerTable->UnblockUpdate(); + mbDataChanged = true; } void ScNameDlg::SelectionChanged() diff --git a/sc/source/ui/navipi/content.cxx b/sc/source/ui/navipi/content.cxx index eaeb767cafaa..918880c03572 100644 --- a/sc/source/ui/navipi/content.cxx +++ b/sc/source/ui/navipi/content.cxx @@ -661,47 +661,47 @@ void ScContentTree::ObjectFresh(ScContentId nType, const weld::TreeIter* pEntry) if (bHiddenDoc && !pHiddenDocument) return; // other document displayed - if (nType == ScContentId::GRAPHIC || nType == ScContentId::OLEOBJECT || nType == ScContentId::DRAWING) - { - auto nOldChildren = m_aRootNodes[nType] ? m_xTreeView->iter_n_children(*m_aRootNodes[nType]) : 0; - auto nOldPos = m_xTreeView->vadjustment_get_value(); + if (!(nType == ScContentId::GRAPHIC || nType == ScContentId::OLEOBJECT || nType == ScContentId::DRAWING)) + return; - freeze(); - ClearType( nType ); - GetDrawNames( nType/*, nId*/ ); - thaw(); + auto nOldChildren = m_aRootNodes[nType] ? m_xTreeView->iter_n_children(*m_aRootNodes[nType]) : 0; + auto nOldPos = m_xTreeView->vadjustment_get_value(); - auto nNewChildren = m_aRootNodes[nType] ? m_xTreeView->iter_n_children(*m_aRootNodes[nType]) : 0; - bool bRestorePos = nOldChildren == nNewChildren; + freeze(); + ClearType( nType ); + GetDrawNames( nType/*, nId*/ ); + thaw(); - if (!pEntry) - ApplyNavigatorSettings(bRestorePos, nOldPos); - if (pEntry) + auto nNewChildren = m_aRootNodes[nType] ? m_xTreeView->iter_n_children(*m_aRootNodes[nType]) : 0; + bool bRestorePos = nOldChildren == nNewChildren; + + if (!pEntry) + ApplyNavigatorSettings(bRestorePos, nOldPos); + if (!pEntry) + return; + + weld::TreeIter* pParent = m_aRootNodes[nType].get(); + std::unique_ptr xOldEntry; + std::unique_ptr xBeginEntry(m_xTreeView->make_iterator(pParent)); + bool bBeginEntry = false; + if( pParent ) + bBeginEntry = m_xTreeView->iter_children(*xBeginEntry); + while (bBeginEntry) + { + OUString aTempText(m_xTreeView->get_text(*xBeginEntry)); + if (aTempText == sKeyString) { - weld::TreeIter* pParent = m_aRootNodes[nType].get(); - std::unique_ptr xOldEntry; - std::unique_ptr xBeginEntry(m_xTreeView->make_iterator(pParent)); - bool bBeginEntry = false; - if( pParent ) - bBeginEntry = m_xTreeView->iter_children(*xBeginEntry); - while (bBeginEntry) - { - OUString aTempText(m_xTreeView->get_text(*xBeginEntry)); - if (aTempText == sKeyString) - { - xOldEntry = m_xTreeView->make_iterator(xBeginEntry.get()); - break; - } - bBeginEntry = m_xTreeView->iter_next(*xBeginEntry); - } - if (xOldEntry) - { - m_xTreeView->expand_row(*pParent); - m_xTreeView->select(*xOldEntry); - m_xTreeView->set_cursor(*xOldEntry); - StoreNavigatorSettings(); - } + xOldEntry = m_xTreeView->make_iterator(xBeginEntry.get()); + break; } + bBeginEntry = m_xTreeView->iter_next(*xBeginEntry); + } + if (xOldEntry) + { + m_xTreeView->expand_row(*pParent); + m_xTreeView->select(*xOldEntry); + m_xTreeView->set_cursor(*xOldEntry); + StoreNavigatorSettings(); } } @@ -867,41 +867,41 @@ void ScContentTree::GetDrawNames( ScContentId nType ) ScDrawLayer* pDrawLayer = pDoc->GetDrawLayer(); SfxObjectShell* pShell = pDoc->GetDocumentShell(); - if (pDrawLayer && pShell) + if (!(pDrawLayer && pShell)) + return; + + SCTAB nTabCount = pDoc->GetTableCount(); + for (SCTAB nTab=0; nTabGetTableCount(); - for (SCTAB nTab=0; nTabGetPage(static_cast(nTab)); + OSL_ENSURE(pPage,"Page ?"); + if (pPage) { - SdrPage* pPage = pDrawLayer->GetPage(static_cast(nTab)); - OSL_ENSURE(pPage,"Page ?"); - if (pPage) + SdrObjListIter aIter( pPage, eIter ); + SdrObject* pObject = aIter.Next(); + while (pObject) { - SdrObjListIter aIter( pPage, eIter ); - SdrObject* pObject = aIter.Next(); - while (pObject) + if ( IsPartOfType( nType, pObject->GetObjIdentifier() ) ) { - if ( IsPartOfType( nType, pObject->GetObjIdentifier() ) ) + OUString aName = ScDrawLayer::GetVisibleName( pObject ); + if (!aName.isEmpty()) { - OUString aName = ScDrawLayer::GetVisibleName( pObject ); - if (!aName.isEmpty()) + if( bisInNavigatoeDlg ) { - if( bisInNavigatoeDlg ) + weld::TreeIter* pParent = m_aRootNodes[nType].get(); + if (pParent) { - weld::TreeIter* pParent = m_aRootNodes[nType].get(); - if (pParent) - { - m_xTreeView->insert(pParent, -1, &aName, nullptr, nullptr, nullptr, false, m_xScratchIter.get()); - m_xTreeView->set_sensitive(*m_xScratchIter, true); - }//end if parent - else - SAL_WARN("sc", "InsertContent without parent"); - } + m_xTreeView->insert(pParent, -1, &aName, nullptr, nullptr, nullptr, false, m_xScratchIter.get()); + m_xTreeView->set_sensitive(*m_xScratchIter, true); + }//end if parent + else + SAL_WARN("sc", "InsertContent without parent"); } - } - pObject = aIter.Next(); } + + pObject = aIter.Next(); } } } @@ -1391,19 +1391,19 @@ void ScContentTree::LoadFile( const OUString& rUrl ) OUString aURL = aDocName; OUString aFilter, aOptions; ScDocumentLoader aLoader( aURL, aFilter, aOptions ); - if ( !aLoader.IsError() ) - { - bHiddenDoc = true; - aHiddenName = aDocName; - aHiddenTitle = aLoader.GetTitle(); - pHiddenDocument = aLoader.GetDocument(); + if ( aLoader.IsError() ) + return; - Refresh(); // get content from loaded document + bHiddenDoc = true; + aHiddenName = aDocName; + aHiddenTitle = aLoader.GetTitle(); + pHiddenDocument = aLoader.GetDocument(); - pHiddenDocument = nullptr; + Refresh(); // get content from loaded document - pParentWindow->GetDocNames( &aHiddenTitle ); // fill list - } + pHiddenDocument = nullptr; + + pParentWindow->GetDocNames( &aHiddenTitle ); // fill list // document is closed again by ScDocumentLoader in dtor } @@ -1574,56 +1574,56 @@ void ScContentTree::SelectEntryByName(const ScContentId nRoot, const OUString& r void ScContentTree::ApplyNavigatorSettings(bool bRestorePos, int nScrollPos) { const ScNavigatorSettings* pSettings = ScNavigatorDlg::GetNavigatorSettings(); - if( pSettings ) - { - ScContentId nRootSel = pSettings->GetRootSelected(); - auto nChildSel = pSettings->GetChildSelected(); + if( !pSettings ) + return; - // tdf#133079 ensure Sheet root is selected if nothing - // else would be - if (nRootSel == ScContentId::ROOT) - { - nRootSel = ScContentId::TABLE; - nChildSel = SC_CONTENT_NOCHILD; - } + ScContentId nRootSel = pSettings->GetRootSelected(); + auto nChildSel = pSettings->GetChildSelected(); - for( int i = 1; i <= int(ScContentId::LAST); ++i ) + // tdf#133079 ensure Sheet root is selected if nothing + // else would be + if (nRootSel == ScContentId::ROOT) + { + nRootSel = ScContentId::TABLE; + nChildSel = SC_CONTENT_NOCHILD; + } + + for( int i = 1; i <= int(ScContentId::LAST); ++i ) + { + ScContentId nEntry = static_cast(i); + if( m_aRootNodes[ nEntry ] ) { - ScContentId nEntry = static_cast(i); - if( m_aRootNodes[ nEntry ] ) + // gray or ungray + if (!m_xTreeView->iter_has_child(*m_aRootNodes[nEntry])) + m_xTreeView->set_sensitive(*m_aRootNodes[nEntry], false); + else + m_xTreeView->set_sensitive(*m_aRootNodes[nEntry], true); + + // expand + bool bExp = pSettings->IsExpanded( nEntry ); + if (bExp != m_xTreeView->get_row_expanded(*m_aRootNodes[nEntry])) { - // gray or ungray - if (!m_xTreeView->iter_has_child(*m_aRootNodes[nEntry])) - m_xTreeView->set_sensitive(*m_aRootNodes[nEntry], false); + if( bExp ) + m_xTreeView->expand_row(*m_aRootNodes[nEntry]); else - m_xTreeView->set_sensitive(*m_aRootNodes[nEntry], true); + m_xTreeView->collapse_row(*m_aRootNodes[nEntry]); + } - // expand - bool bExp = pSettings->IsExpanded( nEntry ); - if (bExp != m_xTreeView->get_row_expanded(*m_aRootNodes[nEntry])) - { - if( bExp ) - m_xTreeView->expand_row(*m_aRootNodes[nEntry]); - else - m_xTreeView->collapse_row(*m_aRootNodes[nEntry]); - } + // select + if( nRootSel == nEntry ) + { + if (bRestorePos) + m_xTreeView->vadjustment_set_value(nScrollPos); - // select - if( nRootSel == nEntry ) + std::unique_ptr xEntry; + if (bExp && (nChildSel != SC_CONTENT_NOCHILD)) { - if (bRestorePos) - m_xTreeView->vadjustment_set_value(nScrollPos); - - std::unique_ptr xEntry; - if (bExp && (nChildSel != SC_CONTENT_NOCHILD)) - { - xEntry = m_xTreeView->make_iterator(m_aRootNodes[nEntry].get()); - if (!m_xTreeView->iter_children(*xEntry) || !m_xTreeView->iter_nth_sibling(*xEntry, nChildSel)) - xEntry.reset(); - } - m_xTreeView->select(xEntry ? *xEntry : *m_aRootNodes[nEntry]); - m_xTreeView->set_cursor(xEntry ? *xEntry : *m_aRootNodes[nEntry]); + xEntry = m_xTreeView->make_iterator(m_aRootNodes[nEntry].get()); + if (!m_xTreeView->iter_children(*xEntry) || !m_xTreeView->iter_nth_sibling(*xEntry, nChildSel)) + xEntry.reset(); } + m_xTreeView->select(xEntry ? *xEntry : *m_aRootNodes[nEntry]); + m_xTreeView->set_cursor(xEntry ? *xEntry : *m_aRootNodes[nEntry]); } } } @@ -1632,26 +1632,26 @@ void ScContentTree::ApplyNavigatorSettings(bool bRestorePos, int nScrollPos) void ScContentTree::StoreNavigatorSettings() const { ScNavigatorSettings* pSettings = ScNavigatorDlg::GetNavigatorSettings(); - if( pSettings ) + if( !pSettings ) + return; + + for( int i = 1; i <= int(ScContentId::LAST); ++i ) { - for( int i = 1; i <= int(ScContentId::LAST); ++i ) - { - ScContentId nEntry = static_cast(i); - bool bExp = m_aRootNodes[nEntry] && m_xTreeView->get_row_expanded(*m_aRootNodes[nEntry]); - pSettings->SetExpanded( nEntry, bExp ); - } + ScContentId nEntry = static_cast(i); + bool bExp = m_aRootNodes[nEntry] && m_xTreeView->get_row_expanded(*m_aRootNodes[nEntry]); + pSettings->SetExpanded( nEntry, bExp ); + } - std::unique_ptr xCurEntry(m_xTreeView->make_iterator()); - if (!m_xTreeView->get_cursor(xCurEntry.get())) - xCurEntry.reset(); + std::unique_ptr xCurEntry(m_xTreeView->make_iterator()); + if (!m_xTreeView->get_cursor(xCurEntry.get())) + xCurEntry.reset(); - ScContentId nRoot; - sal_uLong nChild; - GetEntryIndexes(nRoot, nChild, xCurEntry.get()); + ScContentId nRoot; + sal_uLong nChild; + GetEntryIndexes(nRoot, nChild, xCurEntry.get()); - pSettings->SetRootSelected( nRoot ); - pSettings->SetChildSelected( nChild ); - } + pSettings->SetRootSelected( nRoot ); + pSettings->SetChildSelected( nChild ); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/navipi/navipi.cxx b/sc/source/ui/navipi/navipi.cxx index f970ef9c8683..c7edef768b2e 100644 --- a/sc/source/ui/navipi/navipi.cxx +++ b/sc/source/ui/navipi/navipi.cxx @@ -233,20 +233,20 @@ IMPL_LINK(ScNavigatorDlg, ToolBoxDropdownClickHdl, const OString&, rCommand, voi // the popup menu of the drop mode has to be called in the // click (button down) and not in the select (button up) - if (rCommand == "dragmode") + if (rCommand != "dragmode") + return; + + switch (GetDropMode()) { - switch (GetDropMode()) - { - case 0: - m_xDragModeMenu->set_active("hyperlink", true); - break; - case 1: - m_xDragModeMenu->set_active("link", true); - break; - case 2: - m_xDragModeMenu->set_active("copy", true); - break; - } + case 0: + m_xDragModeMenu->set_active("hyperlink", true); + break; + case 1: + m_xDragModeMenu->set_active("link", true); + break; + case 2: + m_xDragModeMenu->set_active("copy", true); + break; } } @@ -550,26 +550,26 @@ void ScNavigatorDlg::SetDropMode(sal_uInt16 nNew) void ScNavigatorDlg::SetCurrentCell( SCCOL nColNo, SCROW nRowNo ) { - if ( (nColNo+1 != nCurCol) || (nRowNo+1 != nCurRow) ) - { - // SID_CURRENTCELL == Item #0 clear cache, so it's possible - // setting the current cell even in combined areas - mvBoundItems[0]->ClearCache(); + if ((nColNo+1 == nCurCol) && (nRowNo+1 == nCurRow)) + return; - ScAddress aScAddress( nColNo, nRowNo, 0 ); - OUString aAddr(aScAddress.Format(ScRefFlags::ADDR_ABS)); + // SID_CURRENTCELL == Item #0 clear cache, so it's possible + // setting the current cell even in combined areas + mvBoundItems[0]->ClearCache(); - bool bUnmark = false; - if ( GetViewData() ) - bUnmark = !pViewData->GetMarkData().IsCellMarked( nColNo, nRowNo ); + ScAddress aScAddress( nColNo, nRowNo, 0 ); + OUString aAddr(aScAddress.Format(ScRefFlags::ADDR_ABS)); - SfxStringItem aPosItem( SID_CURRENTCELL, aAddr ); - SfxBoolItem aUnmarkItem( FN_PARAM_1, bUnmark ); // cancel selection + bool bUnmark = false; + if ( GetViewData() ) + bUnmark = !pViewData->GetMarkData().IsCellMarked( nColNo, nRowNo ); - rBindings.GetDispatcher()->ExecuteList(SID_CURRENTCELL, - SfxCallMode::SYNCHRON | SfxCallMode::RECORD, - { &aPosItem, &aUnmarkItem }); - } + SfxStringItem aPosItem( SID_CURRENTCELL, aAddr ); + SfxBoolItem aUnmarkItem( FN_PARAM_1, bUnmark ); // cancel selection + + rBindings.GetDispatcher()->ExecuteList(SID_CURRENTCELL, + SfxCallMode::SYNCHRON | SfxCallMode::RECORD, + { &aPosItem, &aUnmarkItem }); } void ScNavigatorDlg::SetCurrentCellStr( const OUString& rName ) @@ -652,21 +652,21 @@ void ScNavigatorDlg::UpdateSelection() return; uno::Reference< drawing::XShapes > xShapes = pViewSh->getSelectedXShapes(); - if( xShapes ) + if( !xShapes ) + return; + + uno::Reference< container::XIndexAccess > xIndexAccess( + xShapes, uno::UNO_QUERY_THROW ); + if( xIndexAccess->getCount() > 1 ) + return; + uno::Reference< drawing::XShape > xShape; + if( xIndexAccess->getByIndex(0) >>= xShape ) { - uno::Reference< container::XIndexAccess > xIndexAccess( - xShapes, uno::UNO_QUERY_THROW ); - if( xIndexAccess->getCount() > 1 ) - return; - uno::Reference< drawing::XShape > xShape; - if( xIndexAccess->getByIndex(0) >>= xShape ) + uno::Reference< container::XNamed > xNamed( xShape, uno::UNO_QUERY_THROW ); + OUString sName = xNamed->getName(); + if (!sName.isEmpty()) { - uno::Reference< container::XNamed > xNamed( xShape, uno::UNO_QUERY_THROW ); - OUString sName = xNamed->getName(); - if (!sName.isEmpty()) - { - m_xLbEntries->SelectEntryByName( ScContentId::DRAWING, sName ); - } + m_xLbEntries->SelectEntryByName( ScContentId::DRAWING, sName ); } } } @@ -863,20 +863,20 @@ void ScNavigatorDlg::MarkDataArea() { ScTabViewShell* pViewSh = GetTabViewShell(); - if ( pViewSh ) - { - if ( !pMarkArea ) - pMarkArea.reset( new ScArea ); + if ( !pViewSh ) + return; - pViewSh->MarkDataArea(); - ScRange aMarkRange; - pViewSh->GetViewData().GetMarkData().GetMarkArea(aMarkRange); - pMarkArea->nColStart = aMarkRange.aStart.Col(); - pMarkArea->nRowStart = aMarkRange.aStart.Row(); - pMarkArea->nColEnd = aMarkRange.aEnd.Col(); - pMarkArea->nRowEnd = aMarkRange.aEnd.Row(); - pMarkArea->nTab = aMarkRange.aStart.Tab(); - } + if ( !pMarkArea ) + pMarkArea.reset( new ScArea ); + + pViewSh->MarkDataArea(); + ScRange aMarkRange; + pViewSh->GetViewData().GetMarkData().GetMarkArea(aMarkRange); + pMarkArea->nColStart = aMarkRange.aStart.Col(); + pMarkArea->nRowStart = aMarkRange.aStart.Row(); + pMarkArea->nColEnd = aMarkRange.aEnd.Col(); + pMarkArea->nRowEnd = aMarkRange.aEnd.Row(); + pMarkArea->nTab = aMarkRange.aStart.Tab(); } void ScNavigatorDlg::UnmarkDataArea() diff --git a/sc/source/ui/optdlg/tpusrlst.cxx b/sc/source/ui/optdlg/tpusrlst.cxx index 5cedd09b6895..e32ebb5de033 100644 --- a/sc/source/ui/optdlg/tpusrlst.cxx +++ b/sc/source/ui/optdlg/tpusrlst.cxx @@ -435,23 +435,23 @@ void ScTpUserLists::RemoveList( size_t nList ) IMPL_LINK( ScTpUserLists, LbSelectHdl, weld::TreeView&, rLb, void ) { - if ( &rLb == mxLbLists.get() ) - { - sal_Int32 nSelPos = mxLbLists->get_selected_index(); - if ( nSelPos != -1 ) - { - if ( !mxFtEntries->get_sensitive() ) mxFtEntries->set_sensitive(true); - if ( !mxEdEntries->get_sensitive() ) mxEdEntries->set_sensitive(true); - if ( !mxBtnRemove->get_sensitive() ) mxBtnRemove->set_sensitive(true); - if ( mxBtnAdd->get_sensitive() ) - { - mxBtnAdd->set_sensitive(false); - mxBtnModify->set_sensitive(false); - } + if ( &rLb != mxLbLists.get() ) + return; - UpdateEntries( nSelPos ); - } + sal_Int32 nSelPos = mxLbLists->get_selected_index(); + if ( nSelPos == -1 ) + return; + + if ( !mxFtEntries->get_sensitive() ) mxFtEntries->set_sensitive(true); + if ( !mxEdEntries->get_sensitive() ) mxEdEntries->set_sensitive(true); + if ( !mxBtnRemove->get_sensitive() ) mxBtnRemove->set_sensitive(true); + if ( mxBtnAdd->get_sensitive() ) + { + mxBtnAdd->set_sensitive(false); + mxBtnModify->set_sensitive(false); } + + UpdateEntries( nSelPos ); } IMPL_LINK( ScTpUserLists, BtnClickHdl, weld::Button&, rBtn, void ) diff --git a/sc/source/ui/pagedlg/areasdlg.cxx b/sc/source/ui/pagedlg/areasdlg.cxx index 791c4d1e696a..c9221ac68b78 100644 --- a/sc/source/ui/pagedlg/areasdlg.cxx +++ b/sc/source/ui/pagedlg/areasdlg.cxx @@ -165,33 +165,33 @@ bool ScPrintAreasDlg::IsTableLocked() const void ScPrintAreasDlg::SetReference( const ScRange& rRef, ScDocument& /* rDoc */ ) { - if ( m_pRefInputEdit ) - { - if ( rRef.aStart != rRef.aEnd ) - RefInputStart( m_pRefInputEdit ); + if ( !m_pRefInputEdit ) + return; - OUString aStr; - const formula::FormulaGrammar::AddressConvention eConv = pDoc->GetAddressConvention(); + if ( rRef.aStart != rRef.aEnd ) + RefInputStart( m_pRefInputEdit ); - if (m_xEdPrintArea.get() == m_pRefInputEdit) - { - aStr = rRef.Format(*pDoc, ScRefFlags::RANGE_ABS, eConv); - OUString aVal = m_xEdPrintArea->GetText(); - Selection aSel = m_xEdPrintArea->GetSelection(); - aSel.Justify(); - aVal = aVal.replaceAt( aSel.Min(), aSel.Len(), aStr ); - Selection aNewSel( aSel.Min(), aSel.Min()+aStr.getLength() ); - m_xEdPrintArea->SetRefString( aVal ); - m_xEdPrintArea->SetSelection( aNewSel ); - } - else - { - bool bRow = ( m_xEdRepeatRow.get() == m_pRefInputEdit ); - lcl_GetRepeatRangeString(&rRef, *pDoc, bRow, aStr); - m_pRefInputEdit->SetRefString( aStr ); - } - Impl_ModifyHdl( *m_pRefInputEdit ); + OUString aStr; + const formula::FormulaGrammar::AddressConvention eConv = pDoc->GetAddressConvention(); + + if (m_xEdPrintArea.get() == m_pRefInputEdit) + { + aStr = rRef.Format(*pDoc, ScRefFlags::RANGE_ABS, eConv); + OUString aVal = m_xEdPrintArea->GetText(); + Selection aSel = m_xEdPrintArea->GetSelection(); + aSel.Justify(); + aVal = aVal.replaceAt( aSel.Min(), aSel.Len(), aStr ); + Selection aNewSel( aSel.Min(), aSel.Min()+aStr.getLength() ); + m_xEdPrintArea->SetRefString( aVal ); + m_xEdPrintArea->SetSelection( aNewSel ); + } + else + { + bool bRow = ( m_xEdRepeatRow.get() == m_pRefInputEdit ); + lcl_GetRepeatRangeString(&rRef, *pDoc, bRow, aStr); + m_pRefInputEdit->SetRefString( aStr ); } + Impl_ModifyHdl( *m_pRefInputEdit ); } void ScPrintAreasDlg::AddRefEntry() diff --git a/sc/source/ui/pagedlg/scuitphfedit.cxx b/sc/source/ui/pagedlg/scuitphfedit.cxx index f1336a641b97..06e3b0406f9e 100644 --- a/sc/source/ui/pagedlg/scuitphfedit.cxx +++ b/sc/source/ui/pagedlg/scuitphfedit.cxx @@ -148,19 +148,19 @@ void ScHFEditPage::SetNumType(SvxNumType eNumType) void ScHFEditPage::Reset( const SfxItemSet* rCoreSet ) { const SfxPoolItem* pItem = nullptr; - if ( rCoreSet->HasItem(nWhich, &pItem) ) - { - const ScPageHFItem& rItem = static_cast(*pItem); + if ( !rCoreSet->HasItem(nWhich, &pItem) ) + return; - if( const EditTextObject* pLeft = rItem.GetLeftArea() ) - m_xWndLeft->SetText( *pLeft ); - if( const EditTextObject* pCenter = rItem.GetCenterArea() ) - m_xWndCenter->SetText( *pCenter ); - if( const EditTextObject* pRight = rItem.GetRightArea() ) - m_xWndRight->SetText( *pRight ); + const ScPageHFItem& rItem = static_cast(*pItem); - SetSelectDefinedList(); - } + if( const EditTextObject* pLeft = rItem.GetLeftArea() ) + m_xWndLeft->SetText( *pLeft ); + if( const EditTextObject* pCenter = rItem.GetCenterArea() ) + m_xWndCenter->SetText( *pCenter ); + if( const EditTextObject* pRight = rItem.GetRightArea() ) + m_xWndRight->SetText( *pRight ); + + SetSelectDefinedList(); } bool ScHFEditPage::FillItemSet( SfxItemSet* rCoreSet ) diff --git a/sc/source/ui/pagedlg/tphfedit.cxx b/sc/source/ui/pagedlg/tphfedit.cxx index db2a91e5e3eb..4de4c93ff554 100644 --- a/sc/source/ui/pagedlg/tphfedit.cxx +++ b/sc/source/ui/pagedlg/tphfedit.cxx @@ -92,25 +92,25 @@ void ScEditWindow::SetDrawingArea(weld::DrawingArea* pDrawingArea) if (mbRTL) m_xEditEngine->SetDefaultHorizontalTextDirection(EEHorizontalTextDirection::R2L); - if (pAcc) + if (!pAcc) + return; + + OUString sName; + switch (eLocation) { - OUString sName; - switch (eLocation) - { - case Left: - sName = ScResId(STR_ACC_LEFTAREA_NAME); - break; - case Center: - sName = ScResId(STR_ACC_CENTERAREA_NAME); - break; - case Right: - sName = ScResId(STR_ACC_RIGHTAREA_NAME); - break; - } - - pAcc->InitAcc(nullptr, m_xEditView.get(), nullptr, - sName, pDrawingArea->get_tooltip_text()); + case Left: + sName = ScResId(STR_ACC_LEFTAREA_NAME); + break; + case Center: + sName = ScResId(STR_ACC_CENTERAREA_NAME); + break; + case Right: + sName = ScResId(STR_ACC_RIGHTAREA_NAME); + break; } + + pAcc->InitAcc(nullptr, m_xEditView.get(), nullptr, + sName, pDrawingArea->get_tooltip_text()); } ScEditWindow::~ScEditWindow() @@ -179,26 +179,26 @@ void ScEditWindow::SetCharAttributes() OSL_ENSURE( pDocSh, "Current DocShell not found" ); OSL_ENSURE( pViewSh, "Current ViewShell not found" ); - if ( pDocSh && pViewSh ) - { - if(pTabViewSh!=nullptr) pTabViewSh->SetInFormatDialog(true); + if ( !(pDocSh && pViewSh) ) + return; - SfxItemSet aSet( m_xEditView->GetAttribs() ); + if(pTabViewSh!=nullptr) pTabViewSh->SetInFormatDialog(true); - ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create(); + SfxItemSet aSet( m_xEditView->GetAttribs() ); - ScopedVclPtr pDlg(pFact->CreateScCharDlg( - mpDialog, &aSet, pDocSh, false)); - pDlg->SetText( ScResId( STR_TEXTATTRS ) ); - if ( pDlg->Execute() == RET_OK ) - { - aSet.ClearItem(); - aSet.Put( *pDlg->GetOutputItemSet() ); - m_xEditView->SetAttribs( aSet ); - } + ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create(); - if(pTabViewSh!=nullptr) pTabViewSh->SetInFormatDialog(false); + ScopedVclPtr pDlg(pFact->CreateScCharDlg( + mpDialog, &aSet, pDocSh, false)); + pDlg->SetText( ScResId( STR_TEXTATTRS ) ); + if ( pDlg->Execute() == RET_OK ) + { + aSet.ClearItem(); + aSet.Put( *pDlg->GetOutputItemSet() ); + m_xEditView->SetAttribs( aSet ); } + + if(pTabViewSh!=nullptr) pTabViewSh->SetInFormatDialog(false); } bool ScEditWindow::KeyInput( const KeyEvent& rKEvt ) diff --git a/sc/source/ui/undo/areasave.cxx b/sc/source/ui/undo/areasave.cxx index 361084ad7739..e250aac70e60 100644 --- a/sc/source/ui/undo/areasave.cxx +++ b/sc/source/ui/undo/areasave.cxx @@ -130,19 +130,19 @@ void ScAreaLinkSaveCollection::Restore( ScDocument* pDoc ) // of links changes if deleted entries are re-added to the link manager (always at the end). sfx2::LinkManager* pLinkManager = pDoc->GetDocLinkManager().getLinkManager(false); - if (pLinkManager) + if (!pLinkManager) + return; + + const ::sfx2::SvBaseLinks& rLinks = pLinkManager->GetLinks(); + size_t nSaveCount = size(); + for (size_t nPos=0; nPosGetLinks(); - size_t nSaveCount = size(); - for (size_t nPos=0; nPosMoveCursorAbs( aBlockRange.aStart.Col(), aBlockRange.aStart.Row(), - SC_FOLLOW_JUMP, false, false ); - SCTAB nTab = pViewShell->GetViewData().GetTabNo(); - ScRange aRange = aBlockRange; - aRange.aStart.SetTab( nTab ); - aRange.aEnd.SetTab( nTab ); - pViewShell->MarkRange( aRange ); + if (!pViewShell) + return; - // not through SetMarkArea to MarkData, due to possibly lacking paint - } + ShowTable( aBlockRange ); // with multiple sheets in range each of them is good + pViewShell->MoveCursorAbs( aBlockRange.aStart.Col(), aBlockRange.aStart.Row(), + SC_FOLLOW_JUMP, false, false ); + SCTAB nTab = pViewShell->GetViewData().GetTabNo(); + ScRange aRange = aBlockRange; + aRange.aStart.SetTab( nTab ); + aRange.aEnd.SetTab( nTab ); + pViewShell->MarkRange( aRange ); + + // not through SetMarkArea to MarkData, due to possibly lacking paint } ScMultiBlockUndo::ScMultiBlockUndo( @@ -473,31 +473,31 @@ void ScDBFuncUndo::EndUndo() { ScSimpleUndo::EndUndo(); - if ( pAutoDBRange ) - { - ScDocument& rDoc = pDocShell->GetDocument(); - SCTAB nTab = rDoc.GetVisibleTab(); - ScDBData* pNoNameData = rDoc.GetAnonymousDBData(nTab); - if (pNoNameData ) - { - SCCOL nRangeX1; - SCROW nRangeY1; - SCCOL nRangeX2; - SCROW nRangeY2; - SCTAB nRangeTab; - pNoNameData->GetArea( nRangeTab, nRangeX1, nRangeY1, nRangeX2, nRangeY2 ); - pDocShell->DBAreaDeleted( nRangeTab, nRangeX1, nRangeY1, nRangeX2 ); + if ( !pAutoDBRange ) + return; - *pNoNameData = *pAutoDBRange; + ScDocument& rDoc = pDocShell->GetDocument(); + SCTAB nTab = rDoc.GetVisibleTab(); + ScDBData* pNoNameData = rDoc.GetAnonymousDBData(nTab); + if (!pNoNameData ) + return; - if ( pAutoDBRange->HasAutoFilter() ) - { - // restore AutoFilter buttons - pAutoDBRange->GetArea( nRangeTab, nRangeX1, nRangeY1, nRangeX2, nRangeY2 ); - rDoc.ApplyFlagsTab( nRangeX1, nRangeY1, nRangeX2, nRangeY1, nRangeTab, ScMF::Auto ); - pDocShell->PostPaint( nRangeX1, nRangeY1, nRangeTab, nRangeX2, nRangeY1, nRangeTab, PaintPartFlags::Grid ); - } - } + SCCOL nRangeX1; + SCROW nRangeY1; + SCCOL nRangeX2; + SCROW nRangeY2; + SCTAB nRangeTab; + pNoNameData->GetArea( nRangeTab, nRangeX1, nRangeY1, nRangeX2, nRangeY2 ); + pDocShell->DBAreaDeleted( nRangeTab, nRangeX1, nRangeY1, nRangeX2 ); + + *pNoNameData = *pAutoDBRange; + + if ( pAutoDBRange->HasAutoFilter() ) + { + // restore AutoFilter buttons + pAutoDBRange->GetArea( nRangeTab, nRangeX1, nRangeY1, nRangeX2, nRangeY2 ); + rDoc.ApplyFlagsTab( nRangeX1, nRangeY1, nRangeX2, nRangeY1, nRangeTab, ScMF::Auto ); + pDocShell->PostPaint( nRangeX1, nRangeY1, nRangeTab, nRangeX2, nRangeY1, nRangeTab, PaintPartFlags::Grid ); } } diff --git a/sc/source/ui/undo/undoblk.cxx b/sc/source/ui/undo/undoblk.cxx index dacbfa00d9f7..2ef4fae1490a 100644 --- a/sc/source/ui/undo/undoblk.cxx +++ b/sc/source/ui/undo/undoblk.cxx @@ -267,29 +267,29 @@ void ScUndoInsertCells::DoChange( const bool bUndo ) aWorkRange.aEnd.Col(), aWorkRange.aEnd.Row(), pTabs[i]+pScenarios[i], nPaint ); } pDocShell->PostDataChanged(); - if (pViewShell) - { - pViewShell->CellContentChanged(); + if (!pViewShell) + return; - if (comphelper::LibreOfficeKit::isActive()) - { - SCTAB nTab = pViewShell->GetViewData().GetTabNo(); - bool bColsAffected = (eCmd == INS_INSCOLS_BEFORE || eCmd == INS_INSCOLS_AFTER || eCmd == INS_CELLSRIGHT); - bool bRowsAffected = (eCmd == INS_INSROWS_BEFORE || eCmd == INS_INSROWS_AFTER || eCmd == INS_CELLSDOWN); + pViewShell->CellContentChanged(); - if (bColsAffected) - ScTabViewShell::notifyAllViewsHeaderInvalidation(pViewShell, COLUMN_HEADER, nTab); + if (!comphelper::LibreOfficeKit::isActive()) + return; - if (bRowsAffected) - ScTabViewShell::notifyAllViewsHeaderInvalidation(pViewShell, ROW_HEADER, nTab); + SCTAB nTab = pViewShell->GetViewData().GetTabNo(); + bool bColsAffected = (eCmd == INS_INSCOLS_BEFORE || eCmd == INS_INSCOLS_AFTER || eCmd == INS_CELLSRIGHT); + bool bRowsAffected = (eCmd == INS_INSROWS_BEFORE || eCmd == INS_INSROWS_AFTER || eCmd == INS_CELLSDOWN); - ScTabViewShell::notifyAllViewsSheetGeomInvalidation( - pViewShell, - bColsAffected, bRowsAffected, - true /* bSizes*/, true /* bHidden */, true /* bFiltered */, - true /* bGroups */, nTab); - } - } + if (bColsAffected) + ScTabViewShell::notifyAllViewsHeaderInvalidation(pViewShell, COLUMN_HEADER, nTab); + + if (bRowsAffected) + ScTabViewShell::notifyAllViewsHeaderInvalidation(pViewShell, ROW_HEADER, nTab); + + ScTabViewShell::notifyAllViewsSheetGeomInvalidation( + pViewShell, + bColsAffected, bRowsAffected, + true /* bSizes*/, true /* bHidden */, true /* bFiltered */, + true /* bGroups */, nTab); } void ScUndoInsertCells::Undo() @@ -540,28 +540,27 @@ void ScUndoDeleteCells::DoChange( const bool bUndo ) pDocShell->PostDataChanged(); // CellContentChanged comes with the selection - if (pViewShell) - { - if (comphelper::LibreOfficeKit::isActive()) - { - SCTAB nTab = pViewShell->GetViewData().GetTabNo(); - bool bColsAffected = (eCmd == DelCellCmd::Cols || eCmd == DelCellCmd::CellsLeft); - bool bRowsAffected = (eCmd == DelCellCmd::Rows || eCmd == DelCellCmd::CellsUp); + if (!pViewShell) + return; - if (bColsAffected) - ScTabViewShell::notifyAllViewsHeaderInvalidation(pViewShell, COLUMN_HEADER, nTab); + if (!comphelper::LibreOfficeKit::isActive()) + return; - if (bRowsAffected) - ScTabViewShell::notifyAllViewsHeaderInvalidation(pViewShell, ROW_HEADER, nTab); + SCTAB nTab = pViewShell->GetViewData().GetTabNo(); + bool bColsAffected = (eCmd == DelCellCmd::Cols || eCmd == DelCellCmd::CellsLeft); + bool bRowsAffected = (eCmd == DelCellCmd::Rows || eCmd == DelCellCmd::CellsUp); - ScTabViewShell::notifyAllViewsSheetGeomInvalidation( - pViewShell, - bColsAffected, bRowsAffected, - true /* bSizes*/, true /* bHidden */, true /* bFiltered */, - true /* bGroups */, nTab); - } + if (bColsAffected) + ScTabViewShell::notifyAllViewsHeaderInvalidation(pViewShell, COLUMN_HEADER, nTab); - } + if (bRowsAffected) + ScTabViewShell::notifyAllViewsHeaderInvalidation(pViewShell, ROW_HEADER, nTab); + + ScTabViewShell::notifyAllViewsSheetGeomInvalidation( + pViewShell, + bColsAffected, bRowsAffected, + true /* bSizes*/, true /* bHidden */, true /* bFiltered */, + true /* bGroups */, nTab); } @@ -1170,18 +1169,18 @@ void ScUndoPaste::Redo() void ScUndoPaste::Repeat(SfxRepeatTarget& rTarget) { - if (dynamic_cast( &rTarget) != nullptr) + if (dynamic_cast( &rTarget) == nullptr) + return; + + ScTabViewShell* pViewSh = static_cast(rTarget).GetViewShell(); + // keep a reference in case the clipboard is changed during PasteFromClip + const ScTransferObj* pOwnClip = ScTransferObj::GetOwnClipboard(ScTabViewShell::GetClipData(pViewSh->GetViewData().GetActiveWin())); + if (pOwnClip) { - ScTabViewShell* pViewSh = static_cast(rTarget).GetViewShell(); - // keep a reference in case the clipboard is changed during PasteFromClip - const ScTransferObj* pOwnClip = ScTransferObj::GetOwnClipboard(ScTabViewShell::GetClipData(pViewSh->GetViewData().GetActiveWin())); - if (pOwnClip) - { - pViewSh->PasteFromClip( nFlags, pOwnClip->GetDocument(), - aPasteOptions.nFunction, aPasteOptions.bSkipEmpty, aPasteOptions.bTranspose, - aPasteOptions.bAsLink, aPasteOptions.eMoveMode, InsertDeleteFlags::NONE, - true ); // allow warning dialog - } + pViewSh->PasteFromClip( nFlags, pOwnClip->GetDocument(), + aPasteOptions.nFunction, aPasteOptions.bSkipEmpty, aPasteOptions.bTranspose, + aPasteOptions.bAsLink, aPasteOptions.eMoveMode, InsertDeleteFlags::NONE, + true ); // allow warning dialog } } @@ -1858,21 +1857,21 @@ void ScUndoSelectionStyle::Redo() void ScUndoSelectionStyle::Repeat(SfxRepeatTarget& rTarget) { - if (dynamic_cast( &rTarget) != nullptr) - { - ScDocument& rDoc = pDocShell->GetDocument(); - ScStyleSheetPool* pStlPool = rDoc.GetStyleSheetPool(); - ScStyleSheet* pStyleSheet = static_cast( pStlPool-> - Find( aStyleName, SfxStyleFamily::Para )); - if (!pStyleSheet) - { - OSL_FAIL("StyleSheet not found"); - return; - } + if (dynamic_cast( &rTarget) == nullptr) + return; - ScTabViewShell& rViewShell = *static_cast(rTarget).GetViewShell(); - rViewShell.SetStyleSheetToMarked( pStyleSheet ); + ScDocument& rDoc = pDocShell->GetDocument(); + ScStyleSheetPool* pStlPool = rDoc.GetStyleSheetPool(); + ScStyleSheet* pStyleSheet = static_cast( pStlPool-> + Find( aStyleName, SfxStyleFamily::Para )); + if (!pStyleSheet) + { + OSL_FAIL("StyleSheet not found"); + return; } + + ScTabViewShell& rViewShell = *static_cast(rTarget).GetViewShell(); + rViewShell.SetStyleSheetToMarked( pStyleSheet ); } bool ScUndoSelectionStyle::CanRepeat(SfxRepeatTarget& rTarget) const diff --git a/sc/source/ui/undo/undocell.cxx b/sc/source/ui/undo/undocell.cxx index 345e85ac4a7d..b34426c8f4d9 100644 --- a/sc/source/ui/undo/undocell.cxx +++ b/sc/source/ui/undo/undocell.cxx @@ -812,18 +812,18 @@ void ScUndoReplaceNote::DoInsertNote( const ScNoteData& rNoteData ) void ScUndoReplaceNote::DoRemoveNote( const ScNoteData& rNoteData ) { - if( rNoteData.mxCaption ) + if( !rNoteData.mxCaption ) + return; + + ScDocument& rDoc = pDocShell->GetDocument(); + OSL_ENSURE( rDoc.GetNote(maPos), "ScUndoReplaceNote::DoRemoveNote - missing cell note" ); + if( std::unique_ptr pNote = rDoc.ReleaseNote( maPos ) ) { - ScDocument& rDoc = pDocShell->GetDocument(); - OSL_ENSURE( rDoc.GetNote(maPos), "ScUndoReplaceNote::DoRemoveNote - missing cell note" ); - if( std::unique_ptr pNote = rDoc.ReleaseNote( maPos ) ) - { - /* Forget pointer to caption object to suppress removing the - caption object from the drawing layer while deleting pNote - (removing the caption is done by a drawing undo action). */ - pNote->ForgetCaption(); - ScDocShell::LOKCommentNotify(LOKCommentNotificationType::Remove, &rDoc, maPos, pNote.get()); - } + /* Forget pointer to caption object to suppress removing the + caption object from the drawing layer while deleting pNote + (removing the caption is done by a drawing undo action). */ + pNote->ForgetCaption(); + ScDocShell::LOKCommentNotify(LOKCommentNotificationType::Remove, &rDoc, maPos, pNote.get()); } } diff --git a/sc/source/ui/undo/undodat.cxx b/sc/source/ui/undo/undodat.cxx index eb356af9da62..30a1a040c7a6 100644 --- a/sc/source/ui/undo/undodat.cxx +++ b/sc/source/ui/undo/undodat.cxx @@ -929,24 +929,24 @@ void ScUndoAutoFilter::DoChange( bool bUndo ) pDBData = pColl->getNamedDBs().findByUpperName(ScGlobal::getCharClassPtr()->uppercase(aDBName)); } - if ( pDBData ) - { - pDBData->SetAutoFilter( bNewFilter ); + if ( !pDBData ) + return; - SCCOL nRangeX1; - SCROW nRangeY1; - SCCOL nRangeX2; - SCROW nRangeY2; - SCTAB nRangeTab; - pDBData->GetArea( nRangeTab, nRangeX1, nRangeY1, nRangeX2, nRangeY2 ); + pDBData->SetAutoFilter( bNewFilter ); - if ( bNewFilter ) - rDoc.ApplyFlagsTab( nRangeX1, nRangeY1, nRangeX2, nRangeY1, nRangeTab, ScMF::Auto ); - else - rDoc.RemoveFlagsTab( nRangeX1, nRangeY1, nRangeX2, nRangeY1, nRangeTab, ScMF::Auto ); + SCCOL nRangeX1; + SCROW nRangeY1; + SCCOL nRangeX2; + SCROW nRangeY2; + SCTAB nRangeTab; + pDBData->GetArea( nRangeTab, nRangeX1, nRangeY1, nRangeX2, nRangeY2 ); - pDocShell->PostPaint( nRangeX1, nRangeY1, nRangeTab, nRangeX2, nRangeY1, nRangeTab, PaintPartFlags::Grid ); - } + if ( bNewFilter ) + rDoc.ApplyFlagsTab( nRangeX1, nRangeY1, nRangeX2, nRangeY1, nRangeTab, ScMF::Auto ); + else + rDoc.RemoveFlagsTab( nRangeX1, nRangeY1, nRangeX2, nRangeY1, nRangeTab, ScMF::Auto ); + + pDocShell->PostPaint( nRangeX1, nRangeY1, nRangeTab, nRangeX2, nRangeY1, nRangeTab, PaintPartFlags::Grid ); } void ScUndoAutoFilter::Undo() diff --git a/sc/source/ui/undo/undoutil.cxx b/sc/source/ui/undo/undoutil.cxx index d89905cbd685..76789b8b7857 100644 --- a/sc/source/ui/undo/undoutil.cxx +++ b/sc/source/ui/undo/undoutil.cxx @@ -35,19 +35,19 @@ void ScUndoUtil::MarkSimpleBlock( const ScDocShell* pDocShell, return; ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell(); - if (pViewShell) - { - SCTAB nViewTab = pViewShell->GetViewData().GetTabNo(); - if ( nViewTab < nStartZ || nViewTab > nEndZ ) - pViewShell->SetTabNo( nStartZ ); + if (!pViewShell) + return; - pViewShell->DoneBlockMode(); - pViewShell->MoveCursorAbs( nStartX, nStartY, SC_FOLLOW_JUMP, false, false ); - pViewShell->InitOwnBlockMode(); - pViewShell->GetViewData().GetMarkData(). - SetMarkArea( ScRange( nStartX, nStartY, nStartZ, nEndX, nEndY, nEndZ ) ); - pViewShell->MarkDataChanged(); - } + SCTAB nViewTab = pViewShell->GetViewData().GetTabNo(); + if ( nViewTab < nStartZ || nViewTab > nEndZ ) + pViewShell->SetTabNo( nStartZ ); + + pViewShell->DoneBlockMode(); + pViewShell->MoveCursorAbs( nStartX, nStartY, SC_FOLLOW_JUMP, false, false ); + pViewShell->InitOwnBlockMode(); + pViewShell->GetViewData().GetMarkData(). + SetMarkArea( ScRange( nStartX, nStartY, nStartZ, nEndX, nEndY, nEndZ ) ); + pViewShell->MarkDataChanged(); } void ScUndoUtil::MarkSimpleBlock( const ScDocShell* pDocShell, -- cgit