Blob Blame History Raw
From c440339bcd6661fe49ba148317b557d0b2e249b6 Mon Sep 17 00:00:00 2001
From: Miklos Vajna <vmiklos@collabora.co.uk>
Date: Tue, 24 Nov 2015 15:04:33 +0100
Subject: [PATCH 360/398] sw lok comments: implement drag of the scrollbar

With this, if a comment has a vertical scrollbar, then not only the
buttons of the scrollbar can be clicked on, but also the slider of the
scrollbar can be dragged.

(cherry picked from commit d562df03098ecb91a89e91ccf69dd6a1eeb98c89)

Change-Id: I2e39e18bf60c42a878bb8bfd808f1d47be27eecb
---
 sw/source/uibase/docvw/SidebarScrollBar.cxx |  7 ++++++-
 sw/source/uibase/docvw/SidebarScrollBar.hxx |  1 +
 sw/source/uibase/docvw/SidebarWin.cxx       | 10 +++++-----
 3 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/sw/source/uibase/docvw/SidebarScrollBar.cxx b/sw/source/uibase/docvw/SidebarScrollBar.cxx
index 909aa763dba1..7a80363693d1 100644
--- a/sw/source/uibase/docvw/SidebarScrollBar.cxx
+++ b/sw/source/uibase/docvw/SidebarScrollBar.cxx
@@ -47,7 +47,7 @@ void SidebarScrollBar::LogicInvalidate(const Rectangle* pRectangle)
         aRectangle = *pRectangle;
 
     // Convert from relative twips to absolute ones.
-    vcl::Window& rParent = m_rSidebarWin.EditWin();
+    vcl::Window& rParent = *m_rSidebarWin.EditWin();
     Point aOffset(GetOutOffXPixel() - rParent.GetOutOffXPixel(), GetOutOffYPixel() - rParent.GetOutOffYPixel());
     rParent.Push(PushFlags::MAPMODE);
     rParent.EnableMapMode();
@@ -60,6 +60,11 @@ void SidebarScrollBar::LogicInvalidate(const Rectangle* pRectangle)
     rWrtShell.libreOfficeKitCallback(LOK_CALLBACK_INVALIDATE_TILES, sRectangle.getStr());
 }
 
+void SidebarScrollBar::MouseMove(const MouseEvent& rMouseEvent)
+{
+    TrackingEvent aEvent(rMouseEvent);
+    Tracking(aEvent);
+}
 
 SidebarScrollBar::~SidebarScrollBar()
 {
diff --git a/sw/source/uibase/docvw/SidebarScrollBar.hxx b/sw/source/uibase/docvw/SidebarScrollBar.hxx
index 9543205387df..ea5639e42e92 100644
--- a/sw/source/uibase/docvw/SidebarScrollBar.hxx
+++ b/sw/source/uibase/docvw/SidebarScrollBar.hxx
@@ -30,6 +30,7 @@ class SidebarScrollBar : public ScrollBar
 protected:
     /// @see OutputDevice::LogicInvalidate().
     void LogicInvalidate(const Rectangle* pRectangle) override;
+    void MouseMove(const MouseEvent& rMouseEvent) override;
 public:
     SidebarScrollBar(SwSidebarWin& rSidebarWin, WinBits nStyle, SwView& rView);
     virtual ~SidebarScrollBar();
diff --git a/sw/source/uibase/docvw/SidebarWin.cxx b/sw/source/uibase/docvw/SidebarWin.cxx
index 1bfab323e833..d22bdd0c245b 100644
--- a/sw/source/uibase/docvw/SidebarWin.cxx
+++ b/sw/source/uibase/docvw/SidebarWin.cxx
@@ -464,15 +464,15 @@ void SwSidebarWin::KeyInput(const KeyEvent& rKeyEvent)
 
 void SwSidebarWin::MouseMove(const MouseEvent& rMouseEvent)
 {
-    if (mpSidebarTextControl)
+    if (vcl::Window* pHit = lcl_getHitWindow(*this, rMouseEvent))
     {
-        mpSidebarTextControl->Push(PushFlags::MAPMODE);
+        pHit->Push(PushFlags::MAPMODE);
         MouseEvent aMouseEvent(rMouseEvent);
-        lcl_translateTwips(*EditWin(), *mpSidebarTextControl, &aMouseEvent);
+        lcl_translateTwips(*EditWin(), *pHit, &aMouseEvent);
 
-        mpSidebarTextControl->MouseMove(aMouseEvent);
+        pHit->MouseMove(aMouseEvent);
 
-        mpSidebarTextControl->Pop();
+        pHit->Pop();
     }
 }
 
-- 
2.12.0