summaryrefslogtreecommitdiff
path: root/starmath
diff options
context:
space:
mode:
authorPovilas Kanapickas <povilas@radix.lt>2022-12-07 03:13:32 +0200
committerTomaž Vajngerl <quikee@gmail.com>2022-12-14 13:50:43 +0000
commit4368c4bf80b2751705c500f2574d9cc3d0ee13a1 (patch)
treed033293770cff95271d91bd7651e4314d63e0683 /starmath
parent7d5841b435a6794e30f02b62db15660ffe4ee39e (diff)
starmath: React to touchpad zoom gestures in SmGraphicWidget
Change-Id: Id158d7778ec0c375c143cf9ce492af21b9625c9d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/143759 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
Diffstat (limited to 'starmath')
-rw-r--r--starmath/inc/view.hxx2
-rw-r--r--starmath/source/view.cxx29
2 files changed, 30 insertions, 1 deletions
diff --git a/starmath/inc/view.hxx b/starmath/inc/view.hxx
index 1905edb02741..41e28a44c3df 100644
--- a/starmath/inc/view.hxx
+++ b/starmath/inc/view.hxx
@@ -159,6 +159,8 @@ private:
AutoTimer aCaretBlinkTimer;
rtl::Reference<SmGraphicAccessible> mxAccessible;
SmViewShell& mrViewShell;
+ double mfLastZoomScale = 0;
+ double mfAccumulatedZoom = 0;
};
class SmGraphicController final : public SfxControllerItem
diff --git a/starmath/source/view.cxx b/starmath/source/view.cxx
index 3c7c8b1554d3..bdc8b0729335 100644
--- a/starmath/source/view.cxx
+++ b/starmath/source/view.cxx
@@ -795,8 +795,35 @@ bool SmGraphicWidget::Command(const CommandEvent& rCEvt)
mrGraphicWindow.SetZoom(nTmpZoom);
bCallBase = false;
}
+ break;
+ }
+ case CommandEventId::GestureZoom:
+ {
+ const CommandGestureZoomData* pData = rCEvt.GetGestureZoomData();
+ if (pData)
+ {
+ if (pData->meEventType == GestureEventZoomType::Begin)
+ {
+ mfLastZoomScale = pData->mfScaleDelta;
+ }
+ else if (pData->meEventType == GestureEventZoomType::Update)
+ {
+ double deltaBetweenEvents = (pData->mfScaleDelta - mfLastZoomScale) / mfLastZoomScale;
+ mfLastZoomScale = pData->mfScaleDelta;
+
+ // Accumulate fractional zoom to avoid small zoom changes from being ignored
+ mfAccumulatedZoom += deltaBetweenEvents;
+ int nZoomChangePercent = mfAccumulatedZoom * 100;
+ mfAccumulatedZoom -= nZoomChangePercent / 100.0;
+
+ sal_uInt16 nZoom = mrGraphicWindow.GetZoom();
+ nZoom += nZoomChangePercent;
+ mrGraphicWindow.SetZoom(nZoom);
+ }
+ bCallBase = false;
+ }
+ break;
}
- break;
default: break;
}