summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorDennis Francis <dennis.francis@collabora.com>2020-05-01 05:39:53 +0530
committerDennis Francis <dennis.francis@collabora.com>2020-06-10 08:21:25 +0200
commit0310c591eb5f4010de8f6d12298491d9c13634a3 (patch)
tree0299114b884d29c0b7b2de830eb886c1b945681a /sc
parent8d414f3a8de5c25bcd830b1d4d8a7be3c34a2ed4 (diff)
lokit: fix autofilter window position...
when client zoom is not 100%. The fix and the reasoning is same as that in lokit: fix validation dropdown's wrong position 3405f7f1b19738cad57b58259105ec87c1108466 Conflicts: sc/source/ui/view/gridwin.cxx Change-Id: I04837721d82b1e178cf5aa1130bbdaf77d13edae Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93240 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Dennis Francis <dennis.francis@collabora.com> (cherry picked from commit 86019fc76473cde457ecf1634bcff9df60ad7cbf) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/95965 Tested-by: Jenkins
Diffstat (limited to 'sc')
-rw-r--r--sc/source/ui/view/gridwin.cxx15
1 files changed, 14 insertions, 1 deletions
diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx
index ce9df4fe4c33..85f2cd517085 100644
--- a/sc/source/ui/view/gridwin.cxx
+++ b/sc/source/ui/view/gridwin.cxx
@@ -628,6 +628,7 @@ void ScGridWindow::LaunchAutoFilterMenu(SCCOL nCol, SCROW nRow)
{
SCTAB nTab = pViewData->GetTabNo();
ScDocument* pDoc = pViewData->GetDocument();
+ bool bLOKActive = comphelper::LibreOfficeKit::isActive();
mpAutoFilterPopup.disposeAndClear();
int nColWidth = ScViewData::ToPixel(pDoc->GetColWidth(nCol, nTab), pViewData->GetPPTX());
@@ -638,7 +639,7 @@ void ScGridWindow::LaunchAutoFilterMenu(SCCOL nCol, SCROW nRow)
// If NWF renders the focus rects itself, that breaks double-buffering.
mpAutoFilterPopup->RequestDoubleBuffering(true);
- if (comphelper::LibreOfficeKit::isActive())
+ if (bLOKActive)
mpAutoFilterPopup->SetLOKNotifier(SfxViewShell::Current());
mpAutoFilterPopup->setOKAction(new AutoFilterAction(this, AutoFilterMode::Normal));
mpAutoFilterPopup->setPopupEndAction(
@@ -650,6 +651,18 @@ void ScGridWindow::LaunchAutoFilterMenu(SCCOL nCol, SCROW nRow)
long nSizeX = 0;
long nSizeY = 0;
pViewData->GetMergeSizePixel(nCol, nRow, nSizeX, nSizeY);
+ if (bLOKActive)
+ {
+ // Reverse the zoom factor from aPos and nSize[X|Y]
+ // before letting the autofilter window convert the to twips
+ // with no zoom information.
+ double fZoomX(pViewData->GetZoomX());
+ double fZoomY(pViewData->GetZoomY());
+ aPos.setX(aPos.getX() / fZoomX);
+ aPos.setY(aPos.getY() / fZoomY);
+ nSizeX = nSizeX / fZoomX;
+ nSizeY = nSizeY / fZoomY;
+ }
tools::Rectangle aCellRect(OutputToScreenPixel(aPos), Size(nSizeX, nSizeY));
ScDBData* pDBData = pDoc->GetDBAtCursor(nCol, nRow, nTab, ScDBDataPortion::AREA);