diff options
author | Dennis Francis <dennis.francis@collabora.com> | 2020-05-01 05:39:53 +0530 |
---|---|---|
committer | Dennis Francis <dennis.francis@collabora.com> | 2020-06-10 08:21:25 +0200 |
commit | 0310c591eb5f4010de8f6d12298491d9c13634a3 (patch) | |
tree | 0299114b884d29c0b7b2de830eb886c1b945681a /sc | |
parent | 8d414f3a8de5c25bcd830b1d4d8a7be3c34a2ed4 (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.cxx | 15 |
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); |