summaryrefslogtreecommitdiff
path: root/sc/source/ui/view
diff options
context:
space:
mode:
authorDennis Francis <dennis.francis@collabora.com>2020-04-26 04:56:11 +0530
committerDennis Francis <dennis.francis@collabora.com>2020-04-29 19:53:11 +0200
commit3405f7f1b19738cad57b58259105ec87c1108466 (patch)
treeee2cd5aa3c0caff87e4988d154719040ce0ba569 /sc/source/ui/view
parent3e9bef4b6ef2e1b467b46f5579b5fce201015d83 (diff)
lokit: fix validation dropdown's wrong position
Reverse the zoom scale on the position of the dropdown before letting the vcl::FloatingWindow convert this to twips without any scale information. Without this reverse scaling, the dropdown will be incorrect due to double application of the same zoom (one in core and one in client). Change-Id: I73de12593b13e1bc9fb0514bec23c20d440d8923 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92913 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Dennis Francis <dennis.francis@collabora.com> (cherry picked from commit a68bfe87f6c720dd2b4721edf869c6801fa2d967) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93008 Tested-by: Jenkins
Diffstat (limited to 'sc/source/ui/view')
-rw-r--r--sc/source/ui/view/gridwin.cxx16
1 files changed, 16 insertions, 0 deletions
diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx
index 4fcda857a4ca..b14ffb1f9a43 100644
--- a/sc/source/ui/view/gridwin.cxx
+++ b/sc/source/ui/view/gridwin.cxx
@@ -1072,6 +1072,22 @@ void ScGridWindow::LaunchDataSelectMenu( SCCOL nCol, SCROW nRow )
long nHeight = 0;
pViewData->GetMergeSizePixel( nCol, nRow, nSizeX, nSizeY );
Point aPos = pViewData->GetScrPos( nCol, nRow, eWhich );
+
+ if (comphelper::LibreOfficeKit::isActive())
+ {
+ // aPos is now view-zoom adjusted and in pixels an more importantly this is pixel aligned to the view-zoom,
+ // but once we use this to set the position of the floating window, it has no information of view-zoom level
+ // so if we don't reverse the zoom now, a simple PixelToLogic(aPos, MapMode(MapUnit::MapTwip)) employed in
+ // FloatingWindow::ImplCalcPos will produce a 'scaled' twips position which will again get zoom scaled in the
+ // client (effective double scaling) causing wrong positioning/size.
+ double fZoomX(pViewData->GetZoomX());
+ double fZoomY(pViewData->GetZoomY());
+ aPos.setX(aPos.getX() / fZoomX);
+ aPos.setY(aPos.getY() / fZoomY);
+ nSizeX = nSizeX / fZoomX;
+ nSizeY = nSizeY / fZoomY;
+ }
+
if ( bLayoutRTL )
aPos.AdjustX( -nSizeX );