summaryrefslogtreecommitdiff
path: root/sd
diff options
context:
space:
mode:
authorJan Holesovsky <kendy@collabora.com>2014-08-01 21:10:22 +0200
committerDavid Tardon <dtardon@redhat.com>2014-08-05 08:40:08 +0000
commit48272a9a720039e79c6a684f1f037811ea42ed0c (patch)
treecc2915dd9eb77571af884a276b2b3e78711af2bd /sd
parentbff075cbe1b969361a891d43ae24a648aa429373 (diff)
bnc#862514: Handle corner case in slide sorter correctly.
We should never return -1 when bIncludeBordersAndGaps is true; but that could have happened in a corner case: * export SAL_USE_VCLPLUGIN=gen * start LibreOffice * open a presentation with many slides * resize the window so that it shows the slides _exactly_, no slide is cut off in the slide sorter * point the mouse pointer into the left "Slides" sidebar (slide sorter) so that it does not cause any mouse-over effect (somehow between the left border, and the slides - there is space that can do this) * turn the mouse wheel all the way down so that the last slide is at the bottom * turn the mouse wheel up _once_ * turn the mouse wheel down _once_ - it will look like the view does not change (the last but one is still at the bottom), but you can see the scrollbar jump to the top * and now you can again start turning the wheel all the way down to repeat the procedure :-) Change-Id: I0253c89513222a1f2eb3263068997d10eea0f130 Reviewed-on: https://gerrit.libreoffice.org/10683 Reviewed-by: David Tardon <dtardon@redhat.com> Tested-by: David Tardon <dtardon@redhat.com>
Diffstat (limited to 'sd')
-rw-r--r--sd/source/ui/slidesorter/view/SlsLayouter.cxx12
1 files changed, 10 insertions, 2 deletions
diff --git a/sd/source/ui/slidesorter/view/SlsLayouter.cxx b/sd/source/ui/slidesorter/view/SlsLayouter.cxx
index 48b94eeeb400..2c1f2ab78cb5 100644
--- a/sd/source/ui/slidesorter/view/SlsLayouter.cxx
+++ b/sd/source/ui/slidesorter/view/SlsLayouter.cxx
@@ -624,11 +624,15 @@ sal_Int32 Layouter::Implementation::GetRowAtPosition (
// When inside the gap below then nYPosition is not over a page
// object.
if (nDistanceIntoGap > 0)
- nRow = ResolvePositionInGap (
+ {
+ sal_Int32 nResolvedRow = ResolvePositionInGap(
nDistanceIntoGap,
eGapMembership,
nRow,
mnVerticalGap);
+ if (!bIncludeBordersAndGaps || nResolvedRow != -1)
+ nRow = nResolvedRow;
+ }
}
else if (bIncludeBordersAndGaps)
{
@@ -667,11 +671,15 @@ sal_Int32 Layouter::Implementation::GetColumnAtPosition (
// When inside the gap at the right then nXPosition is not over a
// page object.
if (nDistanceIntoGap > 0)
- nColumn = ResolvePositionInGap (
+ {
+ sal_Int32 nResolvedColumn = ResolvePositionInGap(
nDistanceIntoGap,
eGapMembership,
nColumn,
mnHorizontalGap);
+ if (!bIncludeBordersAndGaps || nResolvedColumn != -1)
+ nColumn = nResolvedColumn;
+ }
}
else if (bIncludeBordersAndGaps)
{