summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2014-12-12 14:49:09 +0100
committerTor Lillqvist <tml@collabora.com>2014-12-15 14:00:00 +0200
commit3910b0fc3c2085e3213656d2e4319945b443777b (patch)
treeec728e4f634ef4035c75de8d814bac758199f722
parent4bdc58e787996bb15a8283dea31b83d9337accd0 (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 (cherry picked from commit b500e60b32b5cf8fd61beb7476c2c29e65aee3e4) Reviewed-on: https://gerrit.libreoffice.org/13449 Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com> Tested-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
-rw-r--r--sc/source/filter/xml/xmlfilti.cxx13
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.