Blame SOURCES/0001-tdf-86575-for-OOXML-write-plain-REF-if-deleted-parts.patch

a9add1
From 8727412bd1619f42f0dcd9ea820c2348a9bd8af9 Mon Sep 17 00:00:00 2001
a9add1
Message-Id: <8727412bd1619f42f0dcd9ea820c2348a9bd8af9.1462798322.git.erack@redhat.com>
a9add1
From: Eike Rathke <erack@redhat.com>
a9add1
Date: Fri, 6 May 2016 16:56:29 +0200
a9add1
Subject: [PATCH] tdf#86575 for OOXML write plain #REF! if deleted parts
a9add1
MIME-Version: 1.0
a9add1
Content-Type: multipart/mixed; boundary="------------erAck-patch-parts"
a9add1
a9add1
This is a multi-part message in MIME format.
a9add1
--------------erAck-patch-parts
a9add1
Content-Type: text/plain; charset=UTF-8; format=fixed
a9add1
Content-Transfer-Encoding: 8bit
a9add1
a9add1
a9add1
(cherry picked from commit bb0ef99fb9dce30e99a7e9f7fa295a634d07b423)
a9add1
a9add1
write the [#REF!] as defined in ODFF, tdf#86575 related
a9add1
a9add1
... if a part of the reference was deleted, instead of [.#REF!A1]
a9add1
a9add1
Actually this is a regression that already can be tracked down to
a9add1
c54616f62bc70a9d39abf8837a9d7c3031c80a41 which changed things to use
a9add1
ValidAddress() only.
a9add1
a9add1
(cherry picked from commit eeb203089f2ba6dffba9a2543c9a7e8bf551bbc5)
a9add1
a9add1
70f68722d7af02f6da3380c2dd9d54704c20b451
a9add1
a9add1
Change-Id: Ie3233d72bdbdd0ab82386c98a46755ce64ef3e7f
a9add1
Reviewed-on: https://gerrit.libreoffice.org/24705
a9add1
Tested-by: Jenkins <ci@libreoffice.org>
a9add1
Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
a9add1
---
a9add1
 sc/source/core/tool/compiler.cxx | 11 ++++++++++-
a9add1
 1 file changed, 10 insertions(+), 1 deletion(-)
a9add1
a9add1
a9add1
--------------erAck-patch-parts
a9add1
Content-Type: text/x-patch; name="0001-tdf-86575-for-OOXML-write-plain-REF-if-deleted-parts.patch"
a9add1
Content-Transfer-Encoding: 8bit
a9add1
Content-Disposition: attachment; filename="0001-tdf-86575-for-OOXML-write-plain-REF-if-deleted-parts.patch"
a9add1
a9add1
diff --git a/sc/source/core/tool/compiler.cxx b/sc/source/core/tool/compiler.cxx
a9add1
index 80f37a4..091e2e3 100644
a9add1
--- a/sc/source/core/tool/compiler.cxx
a9add1
+++ b/sc/source/core/tool/compiler.cxx
a9add1
@@ -1011,7 +1011,8 @@ struct ConventionOOO_A1_ODF : public ConventionOOO_A1
a9add1
         if( !bSingleRef )
a9add1
             aAbs2 = rRef.Ref2.toAbs(rPos);
a9add1
 
a9add1
-        if (FormulaGrammar::isODFF(eGram) && (!ValidAddress(aAbs1) || !ValidAddress(aAbs2)))
a9add1
+        if (FormulaGrammar::isODFF(eGram) && (rRef.Ref1.IsDeleted() || !ValidAddress(aAbs1) ||
a9add1
+                    (!bSingleRef && (rRef.Ref2.IsDeleted() || !ValidAddress(aAbs2)))))
a9add1
         {
a9add1
             rBuffer.append(rErrRef);
a9add1
             // For ODFF write [#REF!], but not for PODF so apps reading ODF
a9add1
@@ -1408,6 +1409,14 @@ struct ConventionXL_OOX : public ConventionXL_A1
a9add1
             aPos.SetRow(0);
a9add1
         }
a9add1
 
a9add1
+        if (rRef.Ref1.IsDeleted() || (!bSingleRef && rRef.Ref2.IsDeleted()))
a9add1
+        {
a9add1
+            // For OOXML write plain "#REF!" instead of detailed sheet/col/row
a9add1
+            // information.
a9add1
+            rBuf.append(rErrRef);
a9add1
+            return;
a9add1
+        }
a9add1
+
a9add1
         ConventionXL_A1::makeRefStr( rBuf, eGram, aPos, rErrRef, rTabNames, rRef, bSingleRef, bFromRangeName);
a9add1
     }
a9add1
 
a9add1
a9add1
--------------erAck-patch-parts--
a9add1
a9add1