summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkus Mohrhard <markus.mohrhard@googlemail.com>2014-01-27 11:55:23 +0100
committerKohei Yoshida <libreoffice@kohei.us>2014-01-27 14:26:31 +0000
commitd74436c22a72abc7ddb7a06352934e0a8e423f16 (patch)
tree1c5b2b4d2ddc5f48e17e1fd20425c462824f7a30
parent35e7cb39634b0afbbb364fc50fad1a02ce74573b (diff)
only put bounds in vector if range is outside of copy range, fdo#74041
There are 4 cases of which only two need an entry in the vector. If the start is before the copy range and if the end is past the end of the copy range. Change-Id: Ia88f6891e03257c3321dbfb271be559378e39625 Reviewed-on: https://gerrit.libreoffice.org/7684 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Eike Rathke <erack@redhat.com> Reviewed-by: Kohei Yoshida <libreoffice@kohei.us> Tested-by: Kohei Yoshida <libreoffice@kohei.us>
-rw-r--r--sc/source/core/tool/token.cxx35
1 files changed, 17 insertions, 18 deletions
diff --git a/sc/source/core/tool/token.cxx b/sc/source/core/tool/token.cxx
index e23659c9055e..ff456eb4a12d 100644
--- a/sc/source/core/tool/token.cxx
+++ b/sc/source/core/tool/token.cxx
@@ -3162,36 +3162,35 @@ void checkBounds(
// No intersections.
return;
- if (aAbs.aEnd.Row() <= rCxt.maRange.aEnd.Row())
+ if (aAbs.aStart.Row() <= rCxt.maRange.aStart.Row())
{
// +-+ <---- top
// | |
// +--+-+--+ <---- boundary row position
// | | | |
- // | +-+ |
+ // | |
// +-------+
// Add offset from the reference top to the cell position.
SCROW nOffset = rCxt.maRange.aStart.Row() - aAbs.aStart.Row();
rBounds.push_back(rPos.Row()+nOffset);
- return;
}
- // +-+ <---- top
- // | |
- // +--+-+--+ <---- boundary row position
- // | | | |
- // | | | |
- // +--+-+--+ <---- boundary row position
- // | |
- // +-+
-
- // Add offset from the reference top to the cell position.
- SCROW nOffset = rCxt.maRange.aStart.Row() - aAbs.aStart.Row();
- rBounds.push_back(rPos.Row()+nOffset);
- // Ditto.
- nOffset = rCxt.maRange.aEnd.Row() + 1 - aAbs.aStart.Row();
- rBounds.push_back(rPos.Row()+nOffset);
+ if (aAbs.aEnd.Row() >= rCxt.maRange.aEnd.Row())
+ {
+ // only check for end range
+
+ // +-------+
+ // | |
+ // | | | |
+ // +--+-+--+ <---- boundary row position
+ // | |
+ // +-+
+
+ // Ditto.
+ SCROW nOffset = rCxt.maRange.aEnd.Row() + 1 - aAbs.aStart.Row();
+ rBounds.push_back(rPos.Row()+nOffset);
+ }
}
}