[Libreoffice-commits] core.git: sd/source

Jan Holesovsky kendy at collabora.com
Fri Aug 1 12:19:05 PDT 2014


 sd/source/ui/slidesorter/view/SlsLayouter.cxx |   12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

New commits:
commit a24e9c29d54856bb98998772b8960da00401515e
Author: Jan Holesovsky <kendy at collabora.com>
Date:   Fri Aug 1 21:10:22 2014 +0200

    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

diff --git a/sd/source/ui/slidesorter/view/SlsLayouter.cxx b/sd/source/ui/slidesorter/view/SlsLayouter.cxx
index 2e298bd..d628965 100644
--- a/sd/source/ui/slidesorter/view/SlsLayouter.cxx
+++ b/sd/source/ui/slidesorter/view/SlsLayouter.cxx
@@ -560,11 +560,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)
     {
@@ -600,11 +604,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)
     {


More information about the Libreoffice-commits mailing list