sc/source/ui/docshell/docfunc.cxx |   14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

New commits:
commit 039dadf3b48484ba5d1fc71de5561288e6b7c5cb
Author: Eike Rathke <er...@redhat.com>
Date:   Fri Dec 6 22:58:25 2013 +0100

    resolved fdo#66564 calculate formula cell once if AutoCalc disabled
    
    Was lost with 2ce72093cdc68e60fb06ddd4358e0bc7fc8c63a9 and previous
    restructuring.
    
    Change-Id: Ie4c8bdb287b56448406c873840c26ec4759de375
    (cherry picked from commit 2212051e792cb5f51f4191afe83c85fc3730a087)

diff --git a/sc/source/ui/docshell/docfunc.cxx 
b/sc/source/ui/docshell/docfunc.cxx
index c0295e4..72e7e46 100644
--- a/sc/source/ui/docshell/docfunc.cxx
+++ b/sc/source/ui/docshell/docfunc.cxx
@@ -946,7 +946,19 @@ bool ScDocFunc::SetFormulaCell( const ScAddress& rPos, 
ScFormulaCell* pCell, boo
     if (bUndo)
         aOldVal.assign(*pDoc, rPos);
 
-    pDoc->SetFormulaCell(rPos, xCell.release());
+    pCell = pDoc->SetFormulaCell(rPos, xCell.release());
+
+    // For performance reasons API calls may disable calculation while
+    // operating and recalculate once when done. If through user interaction
+    // and AutoCalc is disabled, calculate the formula (without its
+    // dependencies) once so the result matches the current document's content.
+    if (bInteraction && !pDoc->GetAutoCalc() && pCell)
+    {
+        // calculate just the cell once and set Dirty again
+        pCell->Interpret();
+        pCell->SetDirtyVar();
+        pDoc->PutInFormulaTree( pCell);
+    }
 
     if (bUndo)
     {
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to