From 4fa707f46dd10a6e7ee8e2bf4ac1b956780aef71 Mon Sep 17 00:00:00 2001 From: wandererfan Date: Thu, 25 Oct 2018 14:49:08 -0400 Subject: [PATCH] Respect "InvertZoom" parameter --- src/Mod/TechDraw/Gui/QGVPage.cpp | 24 ++++++++++++++++++----- src/Mod/TechDraw/Gui/QGVPage.h | 3 +++ src/Mod/TechDraw/Gui/ViewProviderPage.cpp | 2 +- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/src/Mod/TechDraw/Gui/QGVPage.cpp b/src/Mod/TechDraw/Gui/QGVPage.cpp index 95e6b4e560..5fb5eb7618 100644 --- a/src/Mod/TechDraw/Gui/QGVPage.cpp +++ b/src/Mod/TechDraw/Gui/QGVPage.cpp @@ -41,6 +41,7 @@ #include #include #include +#include #include #include #include @@ -99,12 +100,22 @@ QGVPage::QGVPage(ViewProviderPage *vp, QGraphicsScene* s, QWidget *parent) setScene(s); + setViewportUpdateMode(QGraphicsView::SmartViewportUpdate); setCacheMode(QGraphicsView::CacheBackground); - //setTransformationAnchor(AnchorUnderMouse); - //setTransformationAnchor(NoAnchor); - setTransformationAnchor(AnchorViewCenter); - setResizeAnchor(AnchorViewCenter); + + Base::Reference hGrp = App::GetApplication().GetUserParameter() + .GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("View"); + m_atCursor = hGrp->GetBool("ZoomAtCursor", 1l); + m_invertZoom = hGrp->GetBool("InvertZoom", 0l); + + if (m_atCursor) { + setResizeAnchor(AnchorUnderMouse); + setTransformationAnchor(AnchorUnderMouse); + } else { + setResizeAnchor(AnchorViewCenter); + setTransformationAnchor(AnchorViewCenter); + } setAlignment(Qt::AlignCenter); setDragMode(ScrollHandDrag); @@ -633,7 +644,10 @@ void QGVPage::wheelEvent(QWheelEvent *event) // 1 click = -0.5 ==> factor = 1.2^-0.5 = 0.91 //so to change wheel direction, multiply (event->delta() / 240.0) by +/-1 double mouseBase = 1.2; //magic numbers. change for different mice? - double mouseAdjust = 240.0; + double mouseAdjust = -240.0; + if (m_invertZoom) { + mouseAdjust = -mouseAdjust; + } QPointF center = mapToScene(viewport()->rect().center()); qreal factor = std::pow(mouseBase, event->delta() / mouseAdjust); diff --git a/src/Mod/TechDraw/Gui/QGVPage.h b/src/Mod/TechDraw/Gui/QGVPage.h index 3432997151..05e3fdf6f5 100644 --- a/src/Mod/TechDraw/Gui/QGVPage.h +++ b/src/Mod/TechDraw/Gui/QGVPage.h @@ -126,6 +126,9 @@ private: QBrush* bkgBrush; QImage m_image; ViewProviderPage *m_vpPage; + + bool m_atCursor; + bool m_invertZoom; }; } // namespace MDIViewPageGui diff --git a/src/Mod/TechDraw/Gui/ViewProviderPage.cpp b/src/Mod/TechDraw/Gui/ViewProviderPage.cpp index 92849d8998..233d6092b6 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderPage.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderPage.cpp @@ -188,8 +188,8 @@ bool ViewProviderPage::setEdit(int ModNum) { bool rc = true; if (ModNum == _SHOWDRAWING) { + Visibility.setValue(true); showMDIViewPage(); // show the drawing - Gui::getMainWindow()->setActiveWindow(m_mdiView); rc = false; //finished editing } else if (ModNum == _TOGGLEUPDATE) { auto page = getDrawPage();