sw/inc/PostItMgr.hxx | 2 ++ sw/inc/SidebarWin.hxx | 2 ++ sw/source/uibase/docvw/PostItMgr.cxx | 31 +++++++++++++++++++++++++++++++ sw/source/uibase/docvw/SidebarWin.cxx | 8 ++++++++ sw/source/uibase/docvw/edtwin.cxx | 16 ++++++++++++++++ 5 files changed, 59 insertions(+)
New commits: commit b7ecf6279ef3343f12fce776862c027bfeff6617 Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Thu Nov 12 14:21:03 2015 +0100 sw lok: route SwEditWin::MouseButtonDown to SidebarTextControl if necessary LOK sends all mouse events to SwEditWin, so add initial hit testing in its mouse handler to forward the mouse events to the right VCL widget. Change-Id: I67e8e19f47156261fd7c7eafd4e63f743e0c4ce9 diff --git a/sw/inc/PostItMgr.hxx b/sw/inc/PostItMgr.hxx index dbf4ce3..7427c7a 100644 --- a/sw/inc/PostItMgr.hxx +++ b/sw/inc/PostItMgr.hxx @@ -234,6 +234,8 @@ class SwPostItMgr: public SfxListener Rectangle GetTopScrollRect(const unsigned long aPage) const; bool IsHit(const Point &aPointPixel); + /// Get the matching window that is responsible for handling mouse events of rPointLogic, if any. + vcl::Window* IsHitSidebarWindow(const Point& rPointLogic); Color GetArrowColor(sal_uInt16 aDirection,unsigned long aPage) const; sw::annotation::SwAnnotationWin* GetAnnotationWin(const SwPostItField* pField) const; diff --git a/sw/inc/SidebarWin.hxx b/sw/inc/SidebarWin.hxx index fb47322..f42bcb3 100644 --- a/sw/inc/SidebarWin.hxx +++ b/sw/inc/SidebarWin.hxx @@ -178,6 +178,8 @@ class SwSidebarWin : public vcl::Window virtual void Draw(OutputDevice* pDev, const Point&, const Size&, DrawFlags) override; void PaintTile(vcl::RenderContext& rRenderContext, const Rectangle& rRect); + /// Get the matching sub-widget inside this sidebar widget for rPointLogic, if any. + vcl::Window* IsHitWindow(const Point& rPointLogic); protected: virtual void DataChanged( const DataChangedEvent& aEvent) override; diff --git a/sw/source/uibase/docvw/PostItMgr.cxx b/sw/source/uibase/docvw/PostItMgr.cxx index b0f62a0..9622a10 100644 --- a/sw/source/uibase/docvw/PostItMgr.cxx +++ b/sw/source/uibase/docvw/PostItMgr.cxx @@ -1706,6 +1706,37 @@ bool SwPostItMgr::IsHit(const Point &aPointPixel) } return false; } + +vcl::Window* SwPostItMgr::IsHitSidebarWindow(const Point& rPointLogic) +{ + vcl::Window* pRet = 0; + + if (HasNotes() && ShowNotes()) + { + bool bEnableMapMode = !mpEditWin->IsMapModeEnabled(); + if (bEnableMapMode) + mpEditWin->EnableMapMode(); + + for (SwSidebarItem* pItem : mvPostItFields) + { + SwSidebarWin* pPostIt = pItem->pPostIt; + if (!pPostIt) + continue; + + if (vcl::Window* pWindow = pPostIt->IsHitWindow(rPointLogic)) + { + pRet = pWindow; + break; + } + } + + if (bEnableMapMode) + mpEditWin->EnableMapMode(false); + } + + return pRet; +} + Rectangle SwPostItMgr::GetBottomScrollRect(const unsigned long aPage) const { SwRect aPageRect = mPages[aPage-1]->mPageRect; diff --git a/sw/source/uibase/docvw/SidebarWin.cxx b/sw/source/uibase/docvw/SidebarWin.cxx index 414f3aa..ee2ed58 100644 --- a/sw/source/uibase/docvw/SidebarWin.cxx +++ b/sw/source/uibase/docvw/SidebarWin.cxx @@ -279,6 +279,14 @@ void SwSidebarWin::PaintTile(vcl::RenderContext& rRenderContext, const Rectangle rRenderContext.Push(PushFlags::NONE); } +vcl::Window* SwSidebarWin::IsHitWindow(const Point& rPointLogic) +{ + Rectangle aRectangleLogic(EditWin().PixelToLogic(GetPosPixel()), EditWin().PixelToLogic(GetSizePixel())); + if (aRectangleLogic.IsInside(rPointLogic)) + return mpSidebarTextControl; + return 0; +} + void SwSidebarWin::Draw(OutputDevice* pDev, const Point& rPt, const Size& rSz, DrawFlags nInFlags) { if (mpMetadataAuthor->IsVisible() ) diff --git a/sw/source/uibase/docvw/edtwin.cxx b/sw/source/uibase/docvw/edtwin.cxx index 498771a..a33257c 100644 --- a/sw/source/uibase/docvw/edtwin.cxx +++ b/sw/source/uibase/docvw/edtwin.cxx @@ -2764,6 +2764,22 @@ void SwEditWin::MouseButtonDown(const MouseEvent& _rMEvt) if (m_rView.GetPostItMgr()->IsHit(rMEvt.GetPosPixel())) return; + if (comphelper::LibreOfficeKit::isActive()) + { + if (vcl::Window* pWindow = m_rView.GetPostItMgr()->IsHitSidebarWindow(rMEvt.GetPosPixel())) + { + bool bDisableMapMode = pWindow->IsMapModeEnabled(); + if (bDisableMapMode) + pWindow->EnableMapMode(false); + + pWindow->MouseButtonDown(rMEvt); + + if (bDisableMapMode) + pWindow->EnableMapMode(); + return; + } + } + m_rView.GetPostItMgr()->SetActiveSidebarWin(nullptr); GrabFocus(); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits