[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-5.3' - chart2/source vcl/source
Marco Cecchetti
marco.cecchetti at collabora.com
Fri Apr 20 16:56:35 UTC 2018
chart2/source/controller/main/ChartController_Window.cxx | 14 ++++++++++++++
vcl/source/window/floatwin.cxx | 11 +++++++----
2 files changed, 21 insertions(+), 4 deletions(-)
New commits:
commit fc409bae21ff400736278294ab6a82a5f3cedfa7
Author: Marco Cecchetti <marco.cecchetti at collabora.com>
Date: Wed Apr 18 18:31:00 2018 +0200
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 at collabora.com>
Tested-by: Jan Holesovsky <kendy at collabora.com>
diff --git a/chart2/source/controller/main/ChartController_Window.cxx b/chart2/source/controller/main/ChartController_Window.cxx
index 58f7206554ec..6bf0446cc24c 100644
--- a/chart2/source/controller/main/ChartController_Window.cxx
+++ b/chart2/source/controller/main/ChartController_Window.cxx
@@ -63,6 +63,7 @@
#include <toolkit/awt/vclxmenu.hxx>
#include <sfx2/viewsh.hxx>
+#include <sfx2/ipclient.hxx>
#include <svx/svxids.hrc>
#include <svx/ActionDescriptionProvider.hxx>
#include <svx/obj3d.hxx>
@@ -1238,6 +1239,19 @@ void ChartController::execute_Command( const CommandEvent& rCEvt )
{
PopupMenu* pPopupMenu = static_cast<PopupMenu*>(VCLXMenu::GetImplementation(xPopupMenu)->GetMenu());
pPopupMenu->SetLOKNotifier(SfxViewShell::Current());
+
+ // the context menu expects a position related to the document window,
+ // not to the chart window
+ SfxInPlaceClient* pIPClient = SfxViewShell::Current()->GetIPClient();
+ if (pIPClient)
+ {
+ vcl::Window* pRootWin = pIPClient->GetEditWin();
+ if (pRootWin)
+ {
+ Point aOffset = m_pChartWindow->GetOffsetPixelFrom(*pRootWin);
+ aPos += aOffset;
+ }
+ }
}
xPopupController->setPopupMenu( xPopupMenu );
diff --git a/vcl/source/window/floatwin.cxx b/vcl/source/window/floatwin.cxx
index 2a9b7aab26cf..302703bf4e8a 100644
--- a/vcl/source/window/floatwin.cxx
+++ b/vcl/source/window/floatwin.cxx
@@ -445,10 +445,13 @@ Point FloatingWindow::ImplCalcPos(vcl::Window* pWindow,
if (bLOKActive && pLOKTwipsPos)
{
- if (pW->IsMapModeEnabled())
- *pLOKTwipsPos = pW->PixelToLogic(aPos, MapMode(MapUnit::MapTwip));
- else
- *pLOKTwipsPos = pW->LogicToLogic(aPos, pW->GetMapMode(), MapMode(MapUnit::MapTwip));
+ // if we use pW->LogicToLogic(aPos, pW->GetMapMode(), MapMode(MapUnit::MapTwip)),
+ // 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));
}
// caller expects coordinates relative to top-level win
More information about the Libreoffice-commits
mailing list