|
 |
f325b2 |
From 107c94bbccb8c2607d02bc37096a332c90ba9e83 Mon Sep 17 00:00:00 2001
|
|
 |
f325b2 |
From: Miklos Vajna <vmiklos@collabora.co.uk>
|
|
 |
f325b2 |
Date: Mon, 23 Nov 2015 16:21:43 +0100
|
|
 |
f325b2 |
Subject: [PATCH 356/398] sw lok comments: handle mouse up/down events on the
|
|
 |
f325b2 |
vertical scrollbar
|
|
 |
f325b2 |
|
|
 |
f325b2 |
(cherry picked from commit 527190f0c0284a9a4f5a021d0a9163ef9a63a67f)
|
|
 |
f325b2 |
|
|
 |
f325b2 |
Change-Id: Ib1c334825a6629224fe0c8fba564656d53e67410
|
|
 |
f325b2 |
---
|
|
 |
f325b2 |
sw/source/uibase/docvw/SidebarWin.cxx | 55 ++++++++++++++++++++++++++++-------
|
|
 |
f325b2 |
1 file changed, 45 insertions(+), 10 deletions(-)
|
|
 |
f325b2 |
|
|
 |
f325b2 |
diff --git a/sw/source/uibase/docvw/SidebarWin.cxx b/sw/source/uibase/docvw/SidebarWin.cxx
|
|
 |
f325b2 |
index 47c65c86b06b..c95a8909de54 100644
|
|
 |
f325b2 |
--- a/sw/source/uibase/docvw/SidebarWin.cxx
|
|
 |
f325b2 |
+++ b/sw/source/uibase/docvw/SidebarWin.cxx
|
|
 |
f325b2 |
@@ -93,9 +93,19 @@ void lcl_translateTwips(vcl::Window& rParent, vcl::Window& rChild, MouseEvent* p
|
|
 |
f325b2 |
{
|
|
 |
f325b2 |
// Set map mode, so that callback payloads will contain absolute coordinates instead of relative ones.
|
|
 |
f325b2 |
Point aOffset(rChild.GetOutOffXPixel() - rParent.GetOutOffXPixel(), rChild.GetOutOffYPixel() - rParent.GetOutOffYPixel());
|
|
 |
f325b2 |
+ if (!rChild.IsMapModeEnabled())
|
|
 |
f325b2 |
+ {
|
|
 |
f325b2 |
+ MapMode aMapMode(rChild.GetMapMode());
|
|
 |
f325b2 |
+ aMapMode.SetMapUnit(MAP_TWIP);
|
|
 |
f325b2 |
+ aMapMode.SetScaleX(rParent.GetMapMode().GetScaleX());
|
|
 |
f325b2 |
+ aMapMode.SetScaleY(rParent.GetMapMode().GetScaleY());
|
|
 |
f325b2 |
+ rChild.SetMapMode(aMapMode);
|
|
 |
f325b2 |
+ rChild.EnableMapMode();
|
|
 |
f325b2 |
+ }
|
|
 |
f325b2 |
aOffset = rChild.PixelToLogic(aOffset);
|
|
 |
f325b2 |
MapMode aMapMode(rChild.GetMapMode());
|
|
 |
f325b2 |
aMapMode.SetOrigin(aOffset);
|
|
 |
f325b2 |
+ aMapMode.SetMapUnit(rParent.GetMapMode().GetMapUnit());
|
|
 |
f325b2 |
rChild.SetMapMode(aMapMode);
|
|
 |
f325b2 |
rChild.EnableMapMode(false);
|
|
 |
f325b2 |
|
|
 |
f325b2 |
@@ -109,6 +119,31 @@ void lcl_translateTwips(vcl::Window& rParent, vcl::Window& rChild, MouseEvent* p
|
|
 |
f325b2 |
}
|
|
 |
f325b2 |
}
|
|
 |
f325b2 |
|
|
 |
f325b2 |
+/// Decide which one from the children of rParent should get rMouseEvent.
|
|
 |
f325b2 |
+vcl::Window* lcl_getHitWindow(sw::sidebarwindows::SwSidebarWin& rParent, const MouseEvent& rMouseEvent)
|
|
 |
f325b2 |
+{
|
|
 |
f325b2 |
+ vcl::Window* pRet = 0;
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
+ rParent.EditWin()->Push(PushFlags::MAPMODE);
|
|
 |
f325b2 |
+ rParent.EditWin()->EnableMapMode();
|
|
 |
f325b2 |
+ for (sal_Int16 i = rParent.GetChildCount() - 1; i >= 0; --i)
|
|
 |
f325b2 |
+ {
|
|
 |
f325b2 |
+ vcl::Window* pChild = rParent.GetChild(i);
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
+ Point aPosition(rParent.GetPosPixel());
|
|
 |
f325b2 |
+ aPosition.Move(pChild->GetPosPixel().getX(), pChild->GetPosPixel().getY());
|
|
 |
f325b2 |
+ Size aSize(rParent.GetSizePixel());
|
|
 |
f325b2 |
+ Rectangle aRectangleLogic(rParent.EditWin()->PixelToLogic(aPosition), rParent.EditWin()->PixelToLogic(aSize));
|
|
 |
f325b2 |
+ if (aRectangleLogic.IsInside(rMouseEvent.GetPosPixel()))
|
|
 |
f325b2 |
+ {
|
|
 |
f325b2 |
+ pRet = pChild;
|
|
 |
f325b2 |
+ break;
|
|
 |
f325b2 |
+ }
|
|
 |
f325b2 |
+ }
|
|
 |
f325b2 |
+ rParent.EditWin()->Pop();
|
|
 |
f325b2 |
+ return pRet;
|
|
 |
f325b2 |
+}
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
}
|
|
 |
f325b2 |
|
|
 |
f325b2 |
namespace sw { namespace sidebarwindows {
|
|
 |
f325b2 |
@@ -442,29 +477,29 @@ void SwSidebarWin::MouseMove(const MouseEvent& rMouseEvent)
|
|
 |
f325b2 |
|
|
 |
f325b2 |
void SwSidebarWin::MouseButtonDown(const MouseEvent& rMouseEvent)
|
|
 |
f325b2 |
{
|
|
 |
f325b2 |
- if (mpSidebarTextControl)
|
|
 |
f325b2 |
+ if (vcl::Window* pHit = lcl_getHitWindow(*this, rMouseEvent))
|
|
 |
f325b2 |
{
|
|
 |
f325b2 |
- mpSidebarTextControl->Push(PushFlags::MAPMODE);
|
|
 |
f325b2 |
+ pHit->Push(PushFlags::MAPMODE);
|
|
 |
f325b2 |
MouseEvent aMouseEvent(rMouseEvent);
|
|
 |
f325b2 |
- lcl_translateTwips(*EditWin(), *mpSidebarTextControl, &aMouseEvent);
|
|
 |
f325b2 |
+ lcl_translateTwips(*EditWin(), *pHit, &aMouseEvent);
|
|
 |
f325b2 |
|
|
 |
f325b2 |
- mpSidebarTextControl->MouseButtonDown(aMouseEvent);
|
|
 |
f325b2 |
+ pHit->MouseButtonDown(aMouseEvent);
|
|
 |
f325b2 |
|
|
 |
f325b2 |
- mpSidebarTextControl->Pop();
|
|
 |
f325b2 |
+ pHit->Pop();
|
|
 |
f325b2 |
}
|
|
 |
f325b2 |
}
|
|
 |
f325b2 |
|
|
 |
f325b2 |
void SwSidebarWin::MouseButtonUp(const MouseEvent& rMouseEvent)
|
|
 |
f325b2 |
{
|
|
 |
f325b2 |
- if (mpSidebarTextControl)
|
|
 |
f325b2 |
+ if (vcl::Window* pHit = lcl_getHitWindow(*this, rMouseEvent))
|
|
 |
f325b2 |
{
|
|
 |
f325b2 |
- mpSidebarTextControl->Push(PushFlags::MAPMODE);
|
|
 |
f325b2 |
+ pHit->Push(PushFlags::MAPMODE);
|
|
 |
f325b2 |
MouseEvent aMouseEvent(rMouseEvent);
|
|
 |
f325b2 |
- lcl_translateTwips(*EditWin(), *mpSidebarTextControl, &aMouseEvent);
|
|
 |
f325b2 |
+ lcl_translateTwips(*EditWin(), *pHit, &aMouseEvent);
|
|
 |
f325b2 |
|
|
 |
f325b2 |
- mpSidebarTextControl->MouseButtonUp(aMouseEvent);
|
|
 |
f325b2 |
+ pHit->MouseButtonUp(aMouseEvent);
|
|
 |
f325b2 |
|
|
 |
f325b2 |
- mpSidebarTextControl->Pop();
|
|
 |
f325b2 |
+ pHit->Pop();
|
|
 |
f325b2 |
}
|
|
 |
f325b2 |
}
|
|
 |
f325b2 |
|
|
 |
f325b2 |
--
|
|
 |
f325b2 |
2.12.0
|
|
 |
f325b2 |
|