Kaydet (Commit) a24e9c29 authored tarafından Jan Holesovsky's avatar Jan Holesovsky

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
üst b3b6361c
...@@ -560,11 +560,15 @@ sal_Int32 Layouter::Implementation::GetRowAtPosition ( ...@@ -560,11 +560,15 @@ sal_Int32 Layouter::Implementation::GetRowAtPosition (
// When inside the gap below then nYPosition is not over a page // When inside the gap below then nYPosition is not over a page
// object. // object.
if (nDistanceIntoGap > 0) if (nDistanceIntoGap > 0)
nRow = ResolvePositionInGap ( {
sal_Int32 nResolvedRow = ResolvePositionInGap(
nDistanceIntoGap, nDistanceIntoGap,
eGapMembership, eGapMembership,
nRow, nRow,
mnVerticalGap); mnVerticalGap);
if (!bIncludeBordersAndGaps || nResolvedRow != -1)
nRow = nResolvedRow;
}
} }
else if (bIncludeBordersAndGaps) else if (bIncludeBordersAndGaps)
{ {
...@@ -600,11 +604,15 @@ sal_Int32 Layouter::Implementation::GetColumnAtPosition ( ...@@ -600,11 +604,15 @@ sal_Int32 Layouter::Implementation::GetColumnAtPosition (
// When inside the gap at the right then nXPosition is not over a // When inside the gap at the right then nXPosition is not over a
// page object. // page object.
if (nDistanceIntoGap > 0) if (nDistanceIntoGap > 0)
nColumn = ResolvePositionInGap ( {
sal_Int32 nResolvedColumn = ResolvePositionInGap(
nDistanceIntoGap, nDistanceIntoGap,
eGapMembership, eGapMembership,
nColumn, nColumn,
mnHorizontalGap); mnHorizontalGap);
if (!bIncludeBordersAndGaps || nResolvedColumn != -1)
nColumn = nResolvedColumn;
}
} }
else if (bIncludeBordersAndGaps) else if (bIncludeBordersAndGaps)
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment