[Libreoffice-commits] core.git: Branch 'libreoffice-4-3' - sc/source

Eike Rathke erack at redhat.com
Sun Dec 14 07:54:20 PST 2014


 sc/source/filter/xml/xmlfilti.cxx |   13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

New commits:
commit 1b9bcc2e7f31e880e71c8d2a2aaf1b2839d4d32a
Author: Eike Rathke <erack at redhat.com>
Date:   Fri Dec 12 14:49:09 2014 +0100

    resolved fdo#86809 connect filter conditions correctly
    
    Maybe since 0960ec3e1b7b0d872d1f84d2d56f480a4df08b21 all conditions of a
    single filter stack were OR connected, regardless whether filter-and was
    given in the file.
    
    Change-Id: Ifb423ccc7deb42bb6bba0bfc810607633f2c342c
    (cherry picked from commit b500e60b32b5cf8fd61beb7476c2c29e65aee3e4)
    Reviewed-on: https://gerrit.libreoffice.org/13449
    Reviewed-by: Markus Mohrhard <markus.mohrhard at googlemail.com>
    Tested-by: Markus Mohrhard <markus.mohrhard at googlemail.com>

diff --git a/sc/source/filter/xml/xmlfilti.cxx b/sc/source/filter/xml/xmlfilti.cxx
index 75b0730..f89b033 100644
--- a/sc/source/filter/xml/xmlfilti.cxx
+++ b/sc/source/filter/xml/xmlfilti.cxx
@@ -178,12 +178,19 @@ bool ScXMLFilterContext::GetConnection()
         // secondary item gets the current connection.
         return rItem.mbOr;
 
+    // The next condition of this stack will get the current connection.
+    ++rItem.mnCondCount;
+
     if (maConnStack.size() < 2)
         // There is no last stack.  Likely the first condition in the first
-        // stack whose connection is not used.
-        return true;
+        // stack whose connection is not used.  Default in
+        // ScQueryEntry::eConnect is SC_AND, so return false (AND instead of
+        // OR) here. Otherwise, when saving the document again, we'd write a
+        // uselessly stacked
+        // <table:filter-or><table:filter-and>...</table:filter-and></table:filter-or>
+        // for two conditions connected with AND.
+        return false;
 
-    ++rItem.mnCondCount;
     std::vector<ConnStackItem>::reverse_iterator itr = maConnStack.rbegin();
     ++itr;
     return itr->mbOr; // connection of the last stack.


More information about the Libreoffice-commits mailing list