diff options
author | Marco Cecchetti <marco.cecchetti@collabora.com> | 2018-04-18 18:31:00 +0200 |
---|---|---|
committer | Jan Holesovsky <kendy@collabora.com> | 2018-05-22 09:15:31 +0200 |
commit | 3cfeb9b063fd8f1f46fe0e60581bc9b37baefbd1 (patch) | |
tree | f1b5c63a638048fd28f9a1da4f1afaa46770dd8f /vcl | |
parent | c04ee32ea43c6ac2c2fa0375405431b7730d78c5 (diff) |
lok: charts context menu was misplaced + wrong LogicToLogic conversion
Chart context menu was misplaced since the context menu expects a
position related to the document window not to the chart window.
Moreover map mode is not enabled for chart window, that leads to use
the LogicToLogic routine which unfortunately provides a wrong pixel to
twips conversion. In fact we gets a 20 twips per pixel conversion
since LogicToLogic uses a fixed 72 dpi value, instead of a correctly
computed output device real dpi or at least the most commonly used 96
dpi value.
Change-Id: Idb4220d03fddd4b6d643c1c0fb52754bafed7e36
Reviewed-on: https://gerrit.libreoffice.org/53118
Reviewed-by: Jan Holesovsky <kendy@collabora.com>
Tested-by: Jan Holesovsky <kendy@collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/54649
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/source/window/floatwin.cxx | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/vcl/source/window/floatwin.cxx b/vcl/source/window/floatwin.cxx index e39f1dc1f121..84105f7ff865 100644 --- a/vcl/source/window/floatwin.cxx +++ b/vcl/source/window/floatwin.cxx @@ -442,10 +442,22 @@ Point FloatingWindow::ImplCalcPos(vcl::Window* pWindow, if (bLOKActive && pLOKTwipsPos) { - if (pW->IsMapModeEnabled()) + if (pW->IsMapModeEnabled() || pW->GetMapMode().GetMapUnit() == MapUnit::MapPixel) + { + // if we use pW->LogicToLogic(aPos, pW->GetMapMode(), MapMode(MapUnit::MapTwip)), + // for pixel conversions when map mode is not enabled, we gets + // a 20 twips per pixel conversion since LogicToLogic uses + // a fixed 72 dpi value, instead of a correctly computed output + // device dpi or at least the most commonly used 96 dpi value; + // and anyway the following is what we already do in + // ScGridWindow::LogicInvalidate when map mode is not enabled. + *pLOKTwipsPos = pW->PixelToLogic(aPos, MapMode(MapUnit::MapTwip)); + } else + { *pLOKTwipsPos = pW->LogicToLogic(aPos, pW->GetMapMode(), MapMode(MapUnit::MapTwip)); + } } // caller expects coordinates relative to top-level win |