diff options
author | Eike Rathke <erack@redhat.com> | 2014-12-12 14:49:09 +0100 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2014-12-12 15:22:43 +0100 |
commit | b500e60b32b5cf8fd61beb7476c2c29e65aee3e4 (patch) | |
tree | 95f57e6c6fac4ff234a68218aadf5004f6572a0c /sc | |
parent | 1a858eabef5dda2368c51a155209e5303c2f0547 (diff) |
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
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/filter/xml/xmlfilti.cxx | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/sc/source/filter/xml/xmlfilti.cxx b/sc/source/filter/xml/xmlfilti.cxx index 75b07307f0fe..f89b033daab4 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. |