diff options
Diffstat (limited to 'sfx2/source/view/lokcharthelper.cxx')
-rw-r--r-- | sfx2/source/view/lokcharthelper.cxx | 41 |
1 files changed, 22 insertions, 19 deletions
diff --git a/sfx2/source/view/lokcharthelper.cxx b/sfx2/source/view/lokcharthelper.cxx index f5b4ba37c663..785411de7de2 100644 --- a/sfx2/source/view/lokcharthelper.cxx +++ b/sfx2/source/view/lokcharthelper.cxx @@ -15,6 +15,8 @@ #include <toolkit/helper/vclunohelper.hxx> #include <tools/fract.hxx> #include <tools/mapunit.hxx> +#include <vcl/ITiledRenderable.hxx> +#include <vcl/svapp.hxx> #include <vcl/virdev.hxx> #include <com/sun/star/beans/XPropertySet.hpp> @@ -22,7 +24,6 @@ #include <com/sun/star/frame/XModel.hpp> #include <com/sun/star/chart2/XChartDocument.hpp> - #define TWIPS_PER_PIXEL 15 using namespace com::sun::star; @@ -272,32 +273,34 @@ bool LokChartHelper::postMouseEvent(int nType, int nX, int nY, Rectangle rChartBBox = GetChartBoundingBox(); if (rChartBBox.IsInside(aMousePos)) { + vcl::ITiledRenderable::LOKAsyncEventData* pLOKEv = new vcl::ITiledRenderable::LOKAsyncEventData; + pLOKEv->mpWindow = pChartWindow; + switch (nType) + { + case LOK_MOUSEEVENT_MOUSEBUTTONDOWN: + pLOKEv->mnEvent = VCLEVENT_WINDOW_MOUSEBUTTONDOWN; + break; + case LOK_MOUSEEVENT_MOUSEBUTTONUP: + pLOKEv->mnEvent = VCLEVENT_WINDOW_MOUSEBUTTONUP; + break; + case LOK_MOUSEEVENT_MOUSEMOVE: + pLOKEv->mnEvent = VCLEVENT_WINDOW_MOUSEMOVE; + break; + default: + assert(false); + } + int nChartWinX = nX - rChartBBox.Left(); int nChartWinY = nY - rChartBBox.Top(); // chart window expects pixels, but the conversion factor // can depend on the client zoom Point aPos(nChartWinX * fScaleX, nChartWinY * fScaleY); - MouseEvent aEvent(aPos, nCount, + pLOKEv->maMouseEvent = MouseEvent(aPos, nCount, MouseEventModifiers::SIMPLECLICK, nButtons, nModifier); - switch (nType) - { - case LOK_MOUSEEVENT_MOUSEBUTTONDOWN: - pChartWindow->MouseButtonDown(aEvent); - break; - case LOK_MOUSEEVENT_MOUSEBUTTONUP: - pChartWindow->MouseButtonUp(aEvent); - if (pChartWindow->IsTracking()) - pChartWindow->EndTracking(TrackingEventFlags::DontCallHdl); - break; - case LOK_MOUSEEVENT_MOUSEMOVE: - pChartWindow->MouseMove(aEvent); - break; - default: - assert(false); - break; - } + Application::PostUserEvent(Link<void*, void>(pLOKEv, vcl::ITiledRenderable::LOKPostAsyncEvent)); + return true; } } |