summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--chart2/source/controller/inc/ChartWindow.hxx5
-rw-r--r--chart2/source/controller/main/ChartWindow.cxx15
-rw-r--r--sfx2/source/view/lokcharthelper.cxx41
3 files changed, 42 insertions, 19 deletions
diff --git a/chart2/source/controller/inc/ChartWindow.hxx b/chart2/source/controller/inc/ChartWindow.hxx
index 7883794a02bf..309916d35608 100644
--- a/chart2/source/controller/inc/ChartWindow.hxx
+++ b/chart2/source/controller/inc/ChartWindow.hxx
@@ -58,6 +58,11 @@ public:
virtual void DataChanged( const DataChangedEvent& rDCEvt ) override;
virtual void RequestHelp( const HelpEvent& rHEvt ) override;
+ /// For LibreOfficeKit, we need to route these to the mouse events.
+ virtual void LogicMouseButtonDown(const MouseEvent&);
+ virtual void LogicMouseButtonUp(const MouseEvent&);
+ virtual void LogicMouseMove(const MouseEvent&);
+
void ForceInvalidate();
virtual void Invalidate( InvalidateFlags nFlags = InvalidateFlags::NONE ) override;
virtual void Invalidate( const Rectangle& rRect, InvalidateFlags nFlags = InvalidateFlags::NONE ) override;
diff --git a/chart2/source/controller/main/ChartWindow.cxx b/chart2/source/controller/main/ChartWindow.cxx
index 58d6c291cb74..7da14ae80288 100644
--- a/chart2/source/controller/main/ChartWindow.cxx
+++ b/chart2/source/controller/main/ChartWindow.cxx
@@ -271,6 +271,21 @@ void ChartWindow::RequestHelp( const HelpEvent& rHEvt )
vcl::Window::RequestHelp( rHEvt );
}
+void ChartWindow::LogicMouseButtonDown(const MouseEvent& rEvent)
+{
+ MouseButtonDown(rEvent);
+}
+
+void ChartWindow::LogicMouseButtonUp(const MouseEvent& rEvent)
+{
+ MouseButtonUp(rEvent);
+}
+
+void ChartWindow::LogicMouseMove(const MouseEvent& rEvent)
+{
+ MouseMove(rEvent);
+}
+
void ChartWindow::adjustHighContrastMode()
{
static const DrawModeFlags nContrastMode =
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;
}
}