[Libreoffice-commits] core.git: sc/source

Eike Rathke erack at redhat.com
Fri Dec 12 06:23:42 PST 2014


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

New commits:
commit b500e60b32b5cf8fd61beb7476c2c29e65aee3e4
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

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