tdf#124146 Support panning (pan gesture) of the combobox list
Change-Id: Ic57f4b784d96e69c71caa0e47dbe8117b019a712
Reviewed-on: https://gerrit.libreoffice.org/69656
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
Tested-by: Tomaž Vajngerl <quikee@gmail.com>
diff --git a/vcl/inc/window.h b/vcl/inc/window.h
index bee0f55..74882ef 100644
--- a/vcl/inc/window.h
+++ b/vcl/inc/window.h
@@ -162,6 +162,7 @@
bool mbInSysObjFocusHdl; //< within a SysChildren's GetFocus handler
bool mbInSysObjToTopHdl; //< within a SysChildren's ToTop handler
bool mbSysObjFocus; //< does a SysChild have focus
sal_Int32 mnTouchPanPosition;
css::uno::Reference< css::datatransfer::dnd::XDragSource > mxDragSource;
css::uno::Reference< css::datatransfer::dnd::XDropTarget > mxDropTarget;
diff --git a/vcl/source/control/imp_listbox.cxx b/vcl/source/control/imp_listbox.cxx
index a5711ab..5e72bcf 100644
--- a/vcl/source/control/imp_listbox.cxx
+++ b/vcl/source/control/imp_listbox.cxx
@@ -2506,6 +2506,10 @@
bDone = HandleScrollCommand( rCEvt, mpHScrollBar, mpVScrollBar );
}
}
else if (rCEvt.GetCommand() == CommandEventId::Gesture)
{
bDone = HandleScrollCommand(rCEvt, mpHScrollBar, mpVScrollBar);
}
}
return bDone || Window::EventNotify( rNEvt );
diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx
index c9ea334..cdd2aad 100644
--- a/vcl/source/window/window.cxx
+++ b/vcl/source/window/window.cxx
@@ -807,6 +807,7 @@
mbInBufferedPaint = false;
mnDPIX = 96;
mnDPIY = 96;
mnTouchPanPosition = -1;
}
namespace vcl {
diff --git a/vcl/source/window/window2.cxx b/vcl/source/window/window2.cxx
index dfcec76..c352b00 100644
--- a/vcl/source/window/window2.cxx
+++ b/vcl/source/window/window2.cxx
@@ -750,6 +750,26 @@
}
break;
case CommandEventId::Gesture:
{
const CommandGestureData* pData = rCmd.GetGestureData();
if (pData->meEventType == GestureEventType::PanningBegin)
{
mpWindowImpl->mpFrameData->mnTouchPanPosition = pVScrl->GetThumbPos();
}
else if(pData->meEventType == GestureEventType::PanningUpdate)
{
long nOriginalPosition = mpWindowImpl->mpFrameData->mnTouchPanPosition;
pVScrl->DoScroll(nOriginalPosition + (pData->mfOffset));
}
if (pData->meEventType == GestureEventType::PanningEnd)
{
mpWindowImpl->mpFrameData->mnTouchPanPosition = -1;
}
bRet = true;
}
break;
case CommandEventId::AutoScroll:
{
const CommandScrollData* pData = rCmd.GetAutoScrollData();