summaryrefslogtreecommitdiff
path: root/sd
diff options
context:
space:
mode:
Diffstat (limited to 'sd')
-rw-r--r--sd/source/ui/inc/slideshow.hxx2
-rw-r--r--sd/source/ui/slideshow/slideshow.cxx5
-rw-r--r--sd/source/ui/slideshow/slideshowimpl.cxx21
-rw-r--r--sd/source/ui/slideshow/slideshowimpl.hxx1
-rw-r--r--sd/source/ui/view/viewshel.cxx10
5 files changed, 39 insertions, 0 deletions
diff --git a/sd/source/ui/inc/slideshow.hxx b/sd/source/ui/inc/slideshow.hxx
index f4cc6c2909c2..d6ef3ae77717 100644
--- a/sd/source/ui/inc/slideshow.hxx
+++ b/sd/source/ui/inc/slideshow.hxx
@@ -52,6 +52,7 @@ class Rectangle;
namespace vcl { class Window; }
class SfxRequest;
class WorkWindow;
+class CommandSwipeData;
struct ImplSVEvent;
// TODO: Remove
@@ -154,6 +155,7 @@ public:
/** sets or clears the pause state of the running slideshow.
!!!! This should only be called by the SdShowWindow !!!!*/
bool pause( bool bPause );
+ bool swipe(const CommandSwipeData &rSwipeData);
// settings
bool isFullScreen(); // a.k.a. FuSlideShow::IsFullScreen()
diff --git a/sd/source/ui/slideshow/slideshow.cxx b/sd/source/ui/slideshow/slideshow.cxx
index ff04b309fa9d..cfcf5e36fc35 100644
--- a/sd/source/ui/slideshow/slideshow.cxx
+++ b/sd/source/ui/slideshow/slideshow.cxx
@@ -1059,6 +1059,11 @@ bool SlideShow::isDrawingPossible()
return mxController.is() && mxController->getUsePen();
}
+bool SlideShow::swipe(const CommandSwipeData& rSwipeData)
+{
+ return mxController.is() && mxController->swipe(rSwipeData);
+}
+
void SlideShow::StartInPlacePresentationConfigurationCallback()
{
if( mnInPlaceConfigEvent != 0 )
diff --git a/sd/source/ui/slideshow/slideshowimpl.cxx b/sd/source/ui/slideshow/slideshowimpl.cxx
index b4220e299704..fdbff3f78d68 100644
--- a/sd/source/ui/slideshow/slideshowimpl.cxx
+++ b/sd/source/ui/slideshow/slideshowimpl.cxx
@@ -1109,6 +1109,7 @@ bool SlideshowImpl::startShowImpl( const Sequence< beans::PropertyValue >& aProp
try
{
mxShow = Reference< XSlideShow >( createSlideShow(), UNO_QUERY_THROW );
+
mxView = new SlideShowView(
*mpShowWindow,
mpDoc,
@@ -1232,6 +1233,26 @@ void SlideshowImpl::slideEnded(const bool bReverse)
gotoNextSlide();
}
+bool SlideshowImpl::swipe(const CommandSwipeData &rSwipeData)
+{
+ if (mbUsePen)
+ return false;
+
+ double nVelocityX = rSwipeData.getVelocityX();
+ if (nVelocityX > 0)
+ {
+ gotoPreviousSlide();
+ }
+ else
+ {
+ gotoNextEffect();
+ }
+ //a swipe is followed by a mouse up, tell the view to ignore that mouse up as we've reacted
+ //to the swipe instead
+ mxView->ignoreNextMouseReleased();
+ return true;
+}
+
void SlideshowImpl::removeShapeEvents()
{
if( mxShow.is() && mxListenerProxy.is() ) try
diff --git a/sd/source/ui/slideshow/slideshowimpl.hxx b/sd/source/ui/slideshow/slideshowimpl.hxx
index 5506007286f8..97fe5e3342f3 100644
--- a/sd/source/ui/slideshow/slideshowimpl.hxx
+++ b/sd/source/ui/slideshow/slideshowimpl.hxx
@@ -218,6 +218,7 @@ public:
void slideEnded(const bool bReverse);
void hyperLinkClicked(const OUString & hyperLink) throw (css::uno::RuntimeException);
void click(const css::uno::Reference< css::drawing::XShape > & xShape, const css::awt::MouseEvent & aOriginalEvent);
+ bool swipe(const CommandSwipeData &rSwipeData);
/// ends the presentation async
void endPresentation();
diff --git a/sd/source/ui/view/viewshel.cxx b/sd/source/ui/view/viewshel.cxx
index feb3b11973c8..22fc056d9345 100644
--- a/sd/source/ui/view/viewshel.cxx
+++ b/sd/source/ui/view/viewshel.cxx
@@ -641,6 +641,16 @@ bool ViewShell::HandleScrollCommand(const CommandEvent& rCEvt, ::sd::Window* pWi
switch( rCEvt.GetCommand() )
{
+ case COMMAND_SWIPE:
+ {
+ rtl::Reference< SlideShow > xSlideShow( SlideShow::GetSlideShow( GetViewShellBase() ) );
+ if (xSlideShow.is())
+ {
+ const CommandSwipeData* pSwipeData = rCEvt.GetSwipeData();
+ bDone = xSlideShow->swipe(*pSwipeData);
+ }
+ }
+ break;
case COMMAND_WHEEL:
{
Reference< XSlideShowController > xSlideShowController( SlideShow::GetSlideShowController(GetViewShellBase() ) );